如果在proto文件中将字段定义为repeated
使用protobuf-net编译为c#文件时,由repeated限定的字段是已编译c#文件的列表集合,如下图所示
但是,该文件中的List如上图的红框所示,只有get属性,是readonly,在外部使用的情况下可以通过list.AddRange方式向集合赋值,但由于数据的灵活存储有很多限制,因此http://
查看protobuf-net文件后,发现修改中的csharp.xslt文件即可实现
具体方法如下。
打开proto buf-netprotogencsharp.XSLT文件。 此文件是一个配置文件,用于确定proto文件将生成什么样的c#文件。 该处继续执行http://www.Sina.com/http://www.Sina.com的修正目标
打开后搜索Label_Repeated,里面应该只有这个
找到后,在Repeated限定的proto文件中找到了已编译为C#文件的展开。 如上图所示,大红框的内容就是这样
怎么可以让编译后的c#文件里的List自动加上Set属性并且去掉readonly
找到readonly所在的这行。 下图的红框
然后,删除红框的内容xsl:iftest='not($optionXML ) ) readonly/xsl:if
删除后如下
然后进入步骤2 :
还是在这里找到并删除下图所示的标记内容?
删除此评论并保存文件
然后,将proto文件重新编译为c#文件。 结果如下。
我们发现实现了我们想要的效果。加上Set和去掉readonly
所以打开它