【问题标题】:Persisting a heterogeneous array in C#在 C# 中持久化异构数组
【发布时间】:2010-06-25 19:09:43
【问题描述】:

我有一个List<Animal>,但在该列表中我有Animal 的子类,例如Mammal

我应该使用 [Serializable] 接口来持久化它,这没问题,除非我再次读回它,否则我不知道何时恢复信息时数据来自哪个子类。

所以问题是,我如何存储这些信息?

【问题讨论】:

    标签: c# list serialization


    【解决方案1】:

    您不需要自己处理这些,因为框架会序列化类型,并且它知道在实际反序列化内容之前要创建哪个实例。只需创建一个示例,您就会看到会发生什么... ;-)

    【讨论】:

    • 同样的事情以不同的方式表达——对象知道它是什么类型;如果你需要知道,就问吧! :)
    • 好吧,我很惊讶。开箱即用的东西......不是你习惯的东西:-)
    • Gorgen,与早期的编程相比,现在有很多“开箱即用”的东西......;)
    • 有点,是的。 ;) 我认为这是一代人的问题。大约 20 年前,我一直在开设我的第一门编程课程(在学生 - 教师 - 学生的设置中)(这实际上并不是编程的早期阶段,但由于我对这个主题感兴趣,所以我对这些主题进行了自我教育),从那以后发生了很多变化。伙计,我猜这让我看起来老了......
    【解决方案2】:

    isas 关键字将成为您的朋友。

    很高兴知道 is 关键字会尝试执行转换并根据转换是否成功返回 true 或 false。

    如果您想要实际的对象,并且不只是对其类型感兴趣,那么您最好使用 as 关键字,然后检查它是否存在 null。这将节省您在确定类型后必须再次转换它的步骤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 2016-11-14
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多