protobuf-net重复字段为ObservableCollection <t> </t>

时间:2013-04-28 15:28:07

标签: c# .net protobuf-net

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

message A
{
   repeated float values = 1;
}

生成的文件包含具有List<Single>属性的类。有没有办法使用ObservableCollection<Single>属性而不是List<Single>?实际上,原因是:我想在WPF应用程序中直接使用生成的类,但是将这个属性绑定到某种程度有点困难,因为在这种情况下我不会看到任何更改。

可能有一些解决方法吗?因为否则我将不得不为每个班级做一个不太方便的包装。

编辑:例如,我可以将所有lists替换为批处理文件中的observable collections,但会导致一些问题吗?或者这是这种情况的真正解决方案?

1 个答案:

答案 0 :(得分:2)

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