1
protobuf-net
(r640
フォルダ)の最新バージョンについては、派生型であるProtoMember
にどのように注釈を付けるのが最適でしょうか?protobuf-net:派生型のプロパティに注釈を付ける方法は?
[ProtoBuf.ProtoContract([email protected]"MyBaseTypeProto")]
[Serializable]
public partial class MyBaseType: ProtoBuf.IExtensible { ... }
[ProtoBuf.ProtoContract([email protected]"MyDerivedTypeProto")]
[Serializable]
public partial class MyDerivedType : MyBaseType, ProtoBuf.IExtensible { ... }
[ProtoBuf.ProtoContract([email protected]"MyMessageProto")]
[Serializable]
public partial class MyMessage : ProtoBuf.IExtensible
{
[ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"MyList", DataFormat = ProtoBuf.DataFormat.Default)]
[System.ComponentModel.DefaultValue(null)]
public List<MyDerivedType> MyList;
私はProtoMember
属性にDynamicType
プロパティを追加しようとしましたが、それが認識されていません。
xml defs
からproto types
のクラスを生成できる解決策が必要です。理想的には、これはプロパティ定義に注釈された属性を介して行われます。
package MyPackage;
import "MyDerivedTypeProto.proto";
message MyMessage{
repeated MyDerivedType MyList = 1;
}
しかし
import
文は明らかに(生成されたC#クラスには影響しません:
import
文が含まれたメッセージ型DEFS(.proto
ファイル)に基づいてクラスを生成するためにprotogen.exe
を使用することが可能と思われますコメントを追加する以外.cs
ファイル):
// Generated from: MyMessageProto.proto
// Note: requires additional types generated from: MyDerivedType.proto
Marcに感謝しますが、 'protogen.exe'が自動的に' ProtoInclude'属性を生成するように '.proto'ファイルに何らかの形で注釈を付けることは可能ですか? – BaltoStar
@BaltoStarいいえ、そのための構文はありません。しかし、サブクラス属性を別々の 'partial'コードファイルに入れることができるので、生成されたものを編集する必要はありません –