3

为了保持一定的一致性,我们为很多对象模型使用代码生成,其中一个分支是通过单独的生成模块为 ProtocolBuffers 生成 .proto 文件。不过,在这一点上,我对如何在List<T>对象发生时实现生成感到困惑。

看起来这可以通过合同实现:

[ProtoMember(1)]
public List<SomeType> MyList {get; set;} 

但除此之外,我不确定如何或是否可以仅通过创建 .proto 文件/使用 VS 自定义工具来做到这一点。有什么想法吗?

4

1 回答 1

7
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 是用户可编辑的。

于 2010-06-17T22:20:12.843 回答