解决“Type not expected”错误

时间:2018-02-01 12:18:17

标签: c# winforms datacontractserializer

我正在使用 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)};
    }
}

0 个答案:

没有答案