遇到了protobuf-net,太棒了!我有一个关于空列表序列化的问题。
我首先声明要序列化的对象:
[ProtoContract]
class TestClass
{
[ProtoMember(1)]
List<int> _listOfInts = new List<int>();
public TestClass() { }
public List<int> ListOfInts
{
get { return _listOfInts; }
set { _listOfInts = value; }
}
}
如果 _listOfInts 在我反序列化时为空(但不为空),则此对象将始终为空。看看 protobuf 约定是有道理的,我目前通过添加以下方法来解决这个问题:
[ProtoAfterDeserialization]
private void OnDeserialize()
{
if (_listOfInts == null)
_listOfInts = new List<int>();
}
我的问题是我是否可以以更简洁的方式实现相同的功能,可能使用额外的属性将空/空对象初始化为空而不是空?