2
在我从BinaryFormatter切换到protobuf-net的过程中, 在序列化集合时观察到了差异。使用protobuf-net反序列化集合
在下面的代码示例中,反序列化(protobuf网v2r470)返回 不同的结果,如果一个阵列比外面(STREET2)内 类(street1)实例化。
不允许序列化类声明中instatiated的集合吗?
[ProtoContract]
public class City
{
[ProtoMember(1)]
public string[] streets1;
[ProtoMember(2)]
public string[] streets2 = new string[2];
}
City city = new City();
// Instantiate and populate streets1
city.streets1 = new string[2];
city.streets1[0] = "streetA";
city.streets1[1] = "streetB";
// Populate streets2. Already instantiated
city.streets2[0] = "streetA";
city.streets2[1] = "streetB";
// Serializing
using (var file = File.Create("city.bin"))
{
Serializer.Serialize(file, city);
}
// Deserializing
using (var file = File.OpenRead("city.bin"))
{
City getCity = Serializer.Deserialize<City>(file);
}
反序列化加载在getCity如下:
getCity.streets1: “streetA”, “streetB”(如预期)
getCity.streets2:NULL,NULL, “streetA”,“ streetB“< ---------为什么null?
返回的空值数量与集合中的项数一样多。
感谢的领域! [ProtoContract(SkipConstructor = true)]对每个收集字段都可以正常工作,[ProtoMember(1,OverwriteList = true)]。再次开心! – StefanS