我正在使用 DataContractSerializer 进行xml序列化。当它尝试序列化 SubClass 时,抛出以下错误
&#39; SubClass:http://schemas.datacontract.org/2004/07/SubClass&#39;不是预期的。如果您正在使用DataContractSerializer或将任何静态未知的类型添加到已知类型列表中,请考虑使用DataContractResolver - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给序列化程序的已知类型列表 < / p>
所以我在KnownTypeAttribute中添加了“SubClass”来解决这个问题。但它不起作用。
我已经针对此问题访问了以下文章, "Type not expected", using DataContractSerializer - but it's just a simple class, no funny stuff?
请有人让我知道如何解决这个问题吗?
[DataContract(Name = "BaseClass"]
[KnownType("Types")]
public class BaseClass
{
[DataMember]
public bool IsSerialized{get;set;}
public static Type[] Types()
{
return MainClass.Types();
}
}
[DataContract(Name = "SubClass"]
public class SubClass:BaseClass //Getting error for this class
{
[DataMember]
public string Format {get;set;}
}
public class MainClass
{
public MainClass()
{
var ser = new DataContractSerializer(typeof(BaseClass));
MemoryStream stream = new MemoryStream();
ser.WriteObject(stream,new BaseClass());
}
public static Type[] Types()
{
return new Type[]{typeof(BaseClass),typeof(SubClass)};
}
}