有没有办法用Protobuf-net序列化一个对象,这样下面的调用只会更新dataBlob中改变的值?
var dataBlob = <previous values>;
testTypeModel.DeserializeWithLengthPrefix(stream, dataBlob, typeof(DataBlob), PrefixStyle.Base128, 0, null);
例如:
var dataBlob = new DataBlob { a = 6, b = "Hello World" }
var newDataBlob = new DataBlob { a = 6, b = null }
//Expected data on the wire
var wireBlob = new DataBlob { b = null };
DeserializeWithLengthPrefix(wireBlob, dataBlob, typeof(DataBlob), PrefixStyle.Base128, 0, null);
Assert.AreEqual(newBlob, dataBlob);
答案 0 :(得分:1)
如果您可以跟踪哪些字段已更改:当然,您可以使用条件序列化来实现此目的。对于属性Foo
,最基本的方法是提供bool ShouldSerializeFoo()
方法(protobuf-net支持的预先存在的约定)。 Merge
/ Deserialize
方法(取决于所使用的API)支持传入预先存在的实例。
请注意,列表总是添加的。
但是,protobuf-net不会试图跟踪变化本身。