当我使用protobuf-net编译此示例.proto文件时:
message A
{
repeated float values = 1;
}
生成的文件包含具有List<Single>
属性的类。有没有办法使用ObservableCollection<Single>
属性而不是List<Single>
?实际上,原因是:我想在WPF应用程序中直接使用生成的类,但是将这个属性绑定到某种程度有点困难,因为在这种情况下我不会看到任何更改。
可能有一些解决方法吗?因为否则我将不得不为每个班级做一个不太方便的包装。
编辑:例如,我可以将所有lists
替换为批处理文件中的observable collections
,但会导致一些问题吗?或者这是这种情况的真正解决方案?
答案 0 :(得分:2)
目前,代码生成工具已硬编码为List<T>
。当然,代码生成工具也是完全可选的 - 所以一个选项是:不使用代码生成工具(它可以在手绘DTO中正常工作)。如果您乐意简单地进行自动替换,那很好 - 它根本不会扰乱protobuf-net。但是如果你这么做,另一个选择是编辑代码生成器目录中的csharp.xslt
文件。这是一个xsl-transform文件,它从模型的xml表示中生成代码。 (IIRC)有global::System.Collections.Generic.List
次出现3次,您可以将其更改为您喜欢的任何内容。您可以覆盖csharp.xslt
,或将其复制到新文件中(并对其进行编辑),然后在调用protogen
时将其指定为转换。