【问题标题】:protobuf-net repeated field as ObservableCollection<T>protobuf-net 重复字段为 ObservableCollection<T>
【发布时间】:2013-04-28 15:28:06
【问题描述】:

当我使用 protobuf-net 编译这个示例 .proto 文件时:

message A
{
   repeated float values = 1;
}

生成的文件包含具有List&lt;Single&gt; 属性的类。有没有办法使用ObservableCollection&lt;Single&gt; 属性而不是List&lt;Single&gt;?实际上,原因是:我想直接在 WPF 应用程序中使用生成的类,但是这个属性有点难以绑定,因为在这种情况下我不会看到任何变化。

可能有一些解决方法吗?因为否则我将不得不为每个类进行包装,这不是很方便。

EDIT:例如,我可以将所有 lists 替换为 observable collections 在批处理文件中,但这会导致一些问题?还是这个案子的真正解决方案?

【问题讨论】:

    标签: c# .net protobuf-net


    【解决方案1】:

    目前,代码生成工具被硬编码为List&lt;T&gt;。当然,code-gen 工具也是完全可选的 - 所以 one 选项是:不要使用 code-gen 工具(它可以与手绘 DTO 一起正常工作)。如果您乐于简单地进行自动替换,那很好 - 它根本不会扰乱 protobuf-net。但是,如果您这样做很多,另一种选择是编辑代码生成器目录中的csharp.xslt 文件。这是一个 xsl 转换文件,它从模型的 xml 表示生成代码。有(IIRC)3 次出现 global::System.Collections.Generic.List,您可以将其更改为您喜欢的任何内容。您可以覆盖csharp.xslt,或将其复制到一个新文件中(并对其进行编辑),然后在调用protogen 时将其指定为转换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多