protobuf-net重复字段为ObservableCollection<

本文关键字:ObservableCollection 字段 protobuf-net | 更新日期: 2023-09-27 18:11:09

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

message A
{
   repeated float values = 1;
}

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

可能有一些解决这个问题的方法?因为不然的话,我将不得不为每个类做换行,这不是很方便。

EDIT:例如,我可以将所有列表替换为可观察集合内部的批处理文件,但这会导致一些问题吗?或者它是这个案例的真正解决方案?

protobuf-net重复字段为ObservableCollection<

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