我使用ProtoBuf来序列化类。不幸的是,Serializer.Deserialize方法给出错误“不期望类型,并且不能推断出合同:System.Object”。任何提示如何解决这个问题。
private void WriteToFile( string siteID, object objectTemp, stringfileSystemPath)
{
var type = objectTemp.GetType();
using (var file = File.Create(fileSystemPath))
{
Serializer.NonGeneric.Serialize(file, objectTemp);
}
}
private object ReadFromFile( string siteID, object objectTemp, stringfileSystemPath)
{
Type type = objectTemp.GetType();
object objectTemp2=null;
using (var file = File.OpenRead(fileSystemPath))
{
objectTemp2 = Serializer.NonGeneric.Deserialize(type, file);
}
return objectTemp2;
}
}
我正在使用带有.Net 3.5的protobuf.Net v2 beta
答案 0 :(得分:1)
Serializer.NonGeneric.Deserialize
希望提供protobuf生成的类型。 (你给它的类型是System.Object
。它不知道如何处理它。)
查看protoc生成的C#代码,并指定您尝试从文件中读取的类的typeof()
。
或换句话说,如果WriteToFile
成功,则使用objectTemp的类型。进入该文件的类型是需要从文件中输出的类型。