Что такое .proto эквивалент List <T>в protobuf-net? - PullRequest
3 голосов
/ 18 июня 2010

Чтобы сохранить некоторую согласованность, мы используем генерацию кода для многих наших объектных моделей, и одним из результатов этого было создание файлов .proto для ProtocolBuffers через отдельный модуль генерации.На данный момент, однако, я поставлен в тупик, как реализовать генерацию для случая, когда это происходит на объекте List<T>.

Похоже, это возможно с помощью контрактов:

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

но кроме этого, я не уверен, как или если это возможно сделать только путем создания файла .proto / с помощью пользовательского инструмента VS.Есть мысли?

1 Ответ

6 голосов
/ 18 июня 2010
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 доступен для редактирования пользователем.

...