【发布时间】:2011-11-27 21:10:56
【问题描述】:
在我从 BinaryFormatter 切换到 protobuf-net 期间, 我在序列化集合时观察到了一个差异。
在下面的代码示例中,Deserialize (protobuf-net v2r470) 返回 如果在其中实例化数组,则会出现不同的结果 类(street1)比外面(street2)。
不允许序列化在类声明中实例化的集合吗?
[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);
}
Deserialize 在 getCity 中加载以下内容:
getCity.streets1: "streetA", "streetB"(如预期)
getCity.streets2: null, null, "streetA", "streetB"
返回的 null 数与集合中的项目数一样多。
【问题讨论】:
标签: protobuf-net