2015-11-06 225 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 –