2015-11-06 228 views
1

.NetProtoBufProtoMember如何工作在繼承鏈中?例如,看看下面的類。ProtoBuf屬性ProtoMember是否繼承C#中的標記值

[ProtoContract] 
public class BaseClass 
{ 
    [ProtoMember(1)] 
    public int Id { get; set; } 
    [ProtoMember(2)] 
    public string Name { get; set; } 
} 

[ProtoContract] //required? 
public class DerivedClass : BaseClass 
{ 
    [ProtoMember(3)] //can tag value be 1 ? 
    public string Category { get; set; } 
} 

問題在內聯代碼中提到。

(1)如果基類已經是ProtoContract,我需要標記派生類ProtoContract?的ProtoMemberint
(2)爲得到的類的屬性,我可以重複使用標記值在基類屬性已經使用?

回答

3

(1)我需要標記派生類ProtoContract如果基類是已經ProtoContract? 是的,但你也應該設置爲推導器型

(2)派生類的屬性,我可以重用ProtoMember的標籤值(INT)已經在基類的屬性使用?是的,你可以在派生類從1開始

+0

感謝您的快速反應。你能詳細解釋一下嗎? *「是的,但你也應該設置派生類型的命令」*? –

+1

當然,你應該添加屬性'[ProtoInclude(intOrder的typeof(DerivedClass))]'到基本類型;或者使用另一種方式映射的靜態類RuntimeTypeModel –