使用sharpSerializer进行C#反序列化会导致异常

时间:2011-01-06 11:06:28

标签: c# silverlight

我正在使用这行代码序列化ObservableCollection<MyType>列表,它运行正常:

var serializer = new SharpSerializer(true);
serializer.Serialize(myList, myStreamObject);

当我尝试反序列化数据时会出现问题。

var serializer = new SharpSerializer(true);
this.items = (ObservableCollection<MyType>)serializer.Deserialize(
    myStreamObject);

当我调试serializer.Deserialize(myStreamObject)的返回类型时:

System.Collections.ObjectModel.ObservableCollection`1[MyNameSpace.MyType]

从而导致类型错误?我该如何解决这个问题?反序列化时我做错了什么?

由于

1 个答案:

答案 0 :(得分:1)

我不知道你是使用SharpSerializer用于Silverlight还是用于完整的.NET 默认情况下,SharpSerializer将数据序列化为短类型名称。这可能是您错误的最可能原因。尝试将您的数据序列化为AssemblyFullQualifiedName

var settings = new SharpSerializerBinarySettings();
settings.IncludeAssemblyVersionInTypeName = true;
settings.IncludeCultureInTypeName = true;
settings.IncludePublicKeyTokenInTypeName = true;

var serializer = new SharpSerializer(settings);