3
我有一個反序列化Protobuf-net的問題。我序列化一個List<>
,但是當我反序列化返回的List<>
與第一個不相同。缺少數據。 我不明白爲什麼。用protobuf-net反序列化不同列表
我初始化我List<>
在CTR
public ctr()
{
DateTime date = new DateTime(2012 , 12, 03); ;
LkVisiteurIdDTO visitid= new LkVisiteurIdDTO(10, 11, 12);
PurgeDateTimeDTO datetime= new PurgeDateTimeDTO(date, true);
ContractProtoBuf proto = new ContractProtoBuf();
for (int i = 0; i < 5; i++)
{
proto.m_Index = i + 1;
proto.m_TechnicalKey = "m_TechnicalKey" + i;
proto.m_LogicalKey = visitid;
proto.m_PurgeTime = datetime;
protoContractList.Add(proto);
}
}
public byte[] serialization()
{
MemoryStream ms = new MemoryStream();
try
{
Serializer.Serialize(ms, protoContractList);
arr = ms.ToArray();
return arr;
}
catch
{
Console.WriteLine("La sérialisation protobuf a échoué");
return null;
}
finally
{
ms.Close();
}
}
public List<ContractProtoBuf> deserialization()
{
MemoryStream ms = new MemoryStream(arr,false);
try
{
listeRetour = Serializer.Deserialize<List<ContractProtoBuf>>(ms);
return (listeRetour);
}
catch (Exception e)
{
Console.WriteLine("La désérialisation protobuf a échoué");
return null;
}
finally
{
ms.Close();
}
}
所以我的問題是如何有相同的結果呢?
這裏是我的結構
[ProtoContract]
public struct ContractProtoBuf
{
[ProtoMember(1)]
public int m_Index;
[ProtoMember(2)]
public string m_TechnicalKey;
[ProtoMember(3)]
public LkVisiteurIdDTO m_LogicalKey;
[ProtoMember(4)]
public PurgeDateTimeDTO m_PurgeTime;
}
創建ContractProtoBuf的名單,我和值添加數據「沒有結果。」
public ctr()
{
DateTime date = new DateTime(2012 , 12, 03); ;
for (int i = 0; i < 5; i++)
{
LkVisiteurIdDTO visitid= new LkVisiteurIdDTO(10, 11, 12);
PurgeDateTimeDTO datetime= new PurgeDateTimeDTO(date, true);
ContractProtoBuf proto = new ContractProtoBuf();
proto.m_Index = i + 1;
proto.m_TechnicalKey = "m_TechnicalKey" + i;
proto.m_LogicalKey = visitid;
proto.m_PurgeTime = datetime;
protoContractList.Add(proto);
}
}
序列化我的列表中得到一個byte []當我反序列化字節[],返回列表中不包含的類型PurgeDateTimeDTO和LkVisiteurIdDTO相同的值。
在返回列表中我發現一個DateTime {01/01/0001 0:00:00}和{visitid 0,0,0} 然而m.Index和m_Technicalkey具有良好的價值
沒有看到你正在序列化的數據的例子,或者有什麼不同之處,很難提供幫助。如果你可以製作一個簡短的*完整的*程序來證明問題,那真的很有幫助。 –
重新編輯:你說'PurgeDateTimeDTO'和'LkVisiteurIdDTO'不包含相同的值......但實際上並沒有包括那些讓我重現的值。我真的有興趣幫助你找到問題(作爲圖書館作者,我希望人們能夠成功) - 但是如果沒有上下文,我是無能爲力的。 –