【发布时间】:2010-06-25 19:09:43
【问题描述】:
我有一个List<Animal>,但在该列表中我有Animal 的子类,例如Mammal。
我应该使用 [Serializable] 接口来持久化它,这没问题,除非我再次读回它,否则我不知道何时恢复信息时数据来自哪个子类。
所以问题是,我如何存储这些信息?
【问题讨论】:
标签: c# list serialization
我有一个List<Animal>,但在该列表中我有Animal 的子类,例如Mammal。
我应该使用 [Serializable] 接口来持久化它,这没问题,除非我再次读回它,否则我不知道何时恢复信息时数据来自哪个子类。
所以问题是,我如何存储这些信息?
【问题讨论】:
标签: c# list serialization
您不需要自己处理这些,因为框架会序列化类型,并且它知道在实际反序列化内容之前要创建哪个实例。只需创建一个示例,您就会看到会发生什么... ;-)
【讨论】:
is 和 as 关键字将成为您的朋友。
很高兴知道 is 关键字会尝试执行转换并根据转换是否成功返回 true 或 false。
如果您想要实际的对象,并且不只是对其类型感兴趣,那么您最好使用 as 关键字,然后检查它是否存在 null。这将节省您在确定类型后必须再次转换它的步骤。
【讨论】: