C# ProtoBuf属性ProtoMember是用C中的标记值继承的吗#
C# ProtoBuf属性ProtoMember是用C中的标记值继承的吗#,c#,inheritance,attributes,protocol-buffers,protobuf-net,C#,Inheritance,Attributes,Protocol Buffers,Protobuf Net,.NetProtoBuf的ProtoMember在继承链中是如何工作的?例如,看看下面的类 [ProtoContract] public class BaseClass { [ProtoMember(1)] public int Id { get; set; } [ProtoMember(2)] public string Name { get; set; } } [ProtoContract] //required? public class DerivedC
.Net
ProtoBuf
的ProtoMember
在继承链中是如何工作的?例如,看看下面的类
[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
?(2) 对于派生类的属性,我可以重用已在基类属性中使用的
ProtoMember
的标记值(int
)吗 (1)如果基类已经是ProtoContract,是否需要标记派生类ProtoContract?
是的,但是您还应该将order设置为deriver类型
(2) 对于派生类的属性,我是否可以重用已在基类属性中使用的ProtoMember的标记值(int)?是的,您可以从派生类中的1开始感谢您的快速响应。你能详细说明一下吗?“是的,但是您还应该将order设置为deriver type”?当然,您应该将属性
[ProtoInclude(intOrder,typeof(DerivedClass))]
添加到基本类型;或者使用静态类RuntimeTypeModel
进行另一种方式的映射