c# - ProtoBuf 属性 ProtoMember 是否继承了 C# 中的标记值

标签 c# inheritance attributes protocol-buffers protobuf-net

.Net ProtoBufProtoMember 在继承链中是如何工作的?例如,查看以下类。

[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? 是的,但是您还应该将顺序设置为派生类型

(2) 对于派生类的属性,我可以重用已经在基类属性中使用的 ProtoMember 的标签值 (int) 吗?是的,你可以在派生类中从 1 开始

关于c# - ProtoBuf 属性 ProtoMember 是否继承了 C# 中的标记值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33567993/

相关文章:

c# - 将数据集导出到 asp.net c# 中的 excel 表

C++使用子类从模板继承

c++ - C++ 虚拟继承是如何在编译器中实现的?

java - 将 Object 类作为 Java 类层次结构的根有什么好处?

python - 如何在 PyQt5 中显示和隐藏小部件?

c# - 通过任务栏处理关闭事件

c# - 如何在内存中创建Xml文件上传到服务器

python - 元类配置。 Python版本冲突

ruby-on-rails - 通过虚拟属性选择 Rails 模型

c# - 有比 'switch on type' 更好的选择吗?