将Protobuf-net可序列化属性从子类移到基类?

时间:2016-05-31 23:40:23

标签: c# serialization protobuf-net

我有一个基类和子类,每个都使用Protobuf-net定义为可序列化的:

[DataContract]
public class BaseClass
{
    [DataMember(Order = 1)]
    public string PropertyA { get; set; }

    // ...
}

[DataContract]
public class SubClass : BaseClass
{
    [DataMember(Order = 101)]
    public string PropertyB { get; set; }

    // ...
}

其他地方:

ProtoBuf.Meta.RuntimeTypeModel.Default[typeof(BaseClass)]
    .AddSubType(100, typeof(SubClass));

有必要将子类的一个属性移动到基类:

[DataContract]
public class BaseClass
{
    [DataMember(Order = 1)]
    public string PropertyA { get; set; }

    // [DataMember(Order = ?)]
    public string PropertyB { get; set; }

    // ...
}

[DataContract]
public class SubClass : BaseClass
{
    // ...
}

进行此更改后,是否可以配置类型模型,以便将PropertyB中的BaseClass序列化为与以前相同的位置,以保持与旧客户端的兼容性?

(理想的解决方案将使用System.Runtime.Serialization属性并避免重复序列化输出中的值 - 在new中使用PropertyB实现SubClass base.PropertyB {1}} getset其值。)

0 个答案:

没有答案