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;
我已經嘗試添加DynamicType
屬性的ProtoMember
屬性,但它不認可。
我需要一個解決方案,其中可以從xml defs
的proto types
生成類。所以理想情況下,這將通過註解到屬性定義的屬性完成。
這似乎可以使用protogen.exe
根據消息類型DEFS(.proto
文件),包括import
語句生成類:
package MyPackage;
import "MyDerivedTypeProto.proto";
message MyMessage{
repeated MyDerivedType MyList = 1;
}
但import
聲明顯然對生成的C#類沒有影響( .cs
文件),除了加註釋:
// Generated from: MyMessageProto.proto
// Note: requires additional types generated from: MyDerivedType.proto
感謝Marc,但有可能以某種方式註釋'.proto'文件,以便'protogen.exe'自動生成'ProtoInclude'屬性? – BaltoStar
@BaltoStar不,沒有語法;但是,您可以將子類屬性放在單獨的「partial」代碼文件中,因此不需要編輯生成的代碼 –