我使用ProtoBuf来序列化类。不幸的是,Serializer.Deserialize方法给出错误“类型不是预期的,并且不能推断出合同:System.Object”。任何提示如何解决这个问题。ProtoBuf类型铸造问题
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;
}
}
我使用protobuf.Net V2测试与.net 3.5
当您调用ReadFromFile时objectTemp是什么?这是关键,因为那是你从中获取'type'的地方。就个人而言,因为你没有合并,所以我只是将'Type'传递给这个方法,而不是一个对象。为了讨论'object',你现在必须为它分配一个'new object()' - 所以确实,它不能推断出你需要一个'Customer'(或其他)。 – 2012-03-10 08:15:10