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