Мы используем protobuf-net для обработки наших потребностей в буфере протокола в приложении C#. Поскольку мы совместно используем наши .proto-файлы с другими, не управляемыми приложениями, мы генерируем наш код из .proto-файлов (не используя первый подход protobuf-net кода). Для того, чтобы оставаться как можно DRY, мы храним много документации по интерфейсу внутри самих файлов .proto. Мы сгенерируем код C# с помощью protogen.exe, вызванного целью создания проекта.Сохранение комментариев proto при создании C# с protobuf-net
Теперь, есть ли способ (автоматически) передать эти комментарии в скомпилированный код C#?
В принципе, учитывая .proto как это:
// This message is used to request a resource from the server
message GetResource
{
// The identifier of the requested resource
required string resourceId = 1;
}
... Я хотел бы что-то вроде этого (IExtensible методы опущенные для удобства чтения):
/// <summary>
/// This message is used to request a resource from the server
/// </summary>
[global::System.Serializable,global::ProtoBuf.ProtoContract([email protected]"GetResource")]
public partial class GetResource : global::ProtoBuf.IExtensible
{
public GetResource() {}
private string _resourceId;
/// <summary>
/// The identifier of the requested resource
/// [Required] <-- Would be nice...
/// </summary>
[global::ProtoBuf.ProtoMember(1, IsRequired = true, [email protected]"resourceId",
DataFormat = global::ProtoBuf.DataFormat.Default)]
public string ResourceId
{
get { return _resourceId; }
set { _resourceId = value; }
}
}
Насколько я понимаю, это в настоящее время работает с 'protoc' от proto 3.0.0. Itz работает для C# и Java, но не для C++ AFAIKT –
Да, наконец! Работает как шарм. –