2013-04-28 57 views
1

当我编译与protobuf网此示例.proto文件:protobuf网重复字段的ObservableCollection <T>

message A 
{ 
    repeated float values = 1; 
} 

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

可能会有一些解决此问题的方法吗?因为否则,我将不得不为每个不太方便的课程制作包装。

编辑:我可以代替所有listsobservable collections批处理文件的内部,例如,但它会导致一些问题?或者这是这种情况的真正解决方案?

回答

2

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