这可能听起来像是来自其他主题的重复问题,但它在接口定义中推迟。
我有一个接口,比方说名为 IClass1 ,其定义中包含接口列表,例如 IClass2
我有一个业务部门来实现这个接口;实现自然会像这样
class Class1: IClass1
{
....whatever properties
List<IClass2> DataItems { get; set; }
}
class Class2:IClass2
{
...whatever properties
}
问题是,XmlSerializer
会抱怨Class1中的列表,因为它是一个接口!
所以我的问题是:简单地说,我总是知道在DataItems列表中应该反序列化的实例的类型是什么,类型为Class2,如何告诉我的XML序列化器?
我看过很多变通方法,使用虚拟属性并在序列化/反序列化过程中忽略接口列表是我认为最合适的,我当然不想创建自己的序列化程序或重新实现我的类中的序列化
答案 0 :(得分:1)
如果您正在使用DataContracts,则可以使用KnownTypeAttribute
为反序列化器提供反序列化时应使用的一种或多种类型的列表。
version that takes a string parameter允许您指定将返回一系列类型的方法的名称,在某些情况下可以更容易使用。
我给出的链接在页面末尾有一些示例代码。