具有自定义属性的 C# protobuf

C# protobuf with customize attributes

我想生成具有自定义属性的 C# protobuf 代码。 如:

public sealed partial class LoginIn : pb::IMessage<LoginIn>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    [mycall] // customize attributes
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute] // original
    public LoginIn() {
      OnConstruction();
    }
   ... // rest code

使用 partial class,您可以向 类型 添加属性(和成员),但不能向单个成员添加属性,因此:您可以'不要在这里做任何简单的事情。实际上,您需要调整代码生成本身(意思是:创建您自己的 protoc 插件版本),这远非理想。

另一种选择是手动编辑生成的代码 - 同样:远非理想。

在做任何一个之前,我必须问自己一些关于 [mycall] 的严肃问题,它有多重要,它做了什么,以及是否将它添加到 序列化模型中 是必要的,与创建我自己的域模型相比,它可以具有 您想要的任何属性 ,以及域模型和序列化模型之间的映射。