为了保持一致性,我们为许多对象模型使用代码生成,其中一个分支就是通过单独的生成模块为ProtocolBuffers生成.proto文件。但是,在这一点上,我很难理解如何在List<T>
对象上实现生成。
看起来这可以通过合同来实现:
[ProtoMember(1)]
public List<SomeType> MyList {get; set;}
但除此之外,我不确定如何或仅仅通过使用VS自定义工具创建.proto文件来实现此目的。有什么想法吗?
答案 0 :(得分:6)
repeated SomeType MyList = 1;
此外 - 它不是100%完美,但您可以尝试GetProto()
:
class Program
{
static void Main()
{
Console.WriteLine(Serializer.GetProto<Foo>());
}
}
[ProtoContract]
public class Foo
{
[ProtoMember(1)]
public List<Bar> Items { get; set; }
}
[ProtoContract]
public class Bar { }
给出:
message Foo {
repeated Bar Items = 1;
}
message Bar {
}
最后 - 如果您需要不同的输出,则xslt是用户可编辑的。