我使用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