2

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

message A
{
   repeated float values = 1;
}

生成的文件包含具有List<Single>属性的类。有什么方法可以使用ObservableCollection<Single>属性代替List<Single>?实际上,原因是:我想直接在 WPF 应用程序中使用生成的类,但是要绑定这个属性有点困难,因为在这种情况下我不会看到任何变化。

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

编辑:例如,我可以用批处理文件中的可观察集合替换所有列表但这会导致一些问题吗?或者它是这种情况的真正解决方案?

4

1 回答 1

3

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

于 2013-04-29T11:33:47.850 回答