如何使用 protobuf.net 在 2 个对象之间查找 "delta" 或 "diff",跟踪已更改

How to find "delta" or "diff" between 2 objects using protobuf.net, to track have been changed

我知道这个问题很模糊,但假设我有 2 个对象

Object A
{
  Id: 1,
  Title: "Abc",
  Flag: true
}

Object B
{
  Id: 1,
  Title: "",
  Flag: false
}

有没有办法找到更改的内容?知道title设置为“”(或者null也可以),Flag设置为false。

我的所有对象目前都使用 protobuf.net (C#) 序列化,我想知道是否有 "magic" 方法可以做到这一点。这些对象有 100 多个属性,所以我想要一种方法来一个一个地做。

我们能否按语法枚举所有属性并将其存储在通用容器中?

该代码用于从并发用户同步对象的上下文中。

谢谢

protobuf-net 本身不跟踪差异 - 这根本不是一个功能(它没有 "context" 包装器来存储 before/after 状态)。然而,你的类型可以,如果它喜欢的话,protobuf-net 能够使用 "conditional serialization" 来只传输增量。这是 有效地 的重述,其中包括执行此操作的代码示例。