如何停止使用Protobuf-Net继承并直接使用继承类?

时间:2017-05-04 14:47:51

标签: c# inheritance serialization deserialization protobuf-net

我有一个继承自基类的继承设置类,我想(de)单独序列化(例子)

[ProtoContract]
[ProtoInclude(1, typeof(GlobalSettings))]
[ProtoInclude(2, typeof(UserSettings))]
public class BaseSettings
{
}

[ProtoContract]
public class GlobalSettings: BaseSettings
{
    [ProtoMember(1)]
    public string TempPath { get; set; }
}

[ProtoContract]
public class UserSettings: BaseSettings
{
    [ProtoMember(1)]
    public int UILanguage { get; set; }
}

唯一的问题是我无法承受丢失配置,是否可以通过以下方式完成:如果UserSettings不再从BaseSettings继承并移动到另一个程序集以便独立使用,(de)序列化仍然可行(有些没有访问GlobalSettings类的转换或没有转换?

1 个答案:

答案 0 :(得分:1)

继承是序列化模型的基本组成部分,尤其是,如果你谈论Deserialize<BaseSettings>。如果您只是执行Deserialize<GlobalSettings>Deserialize<UserSettings>之类的操作,那么您可以删除[ProtoInclude],但问题就会宣布成员BaseSettings进入子类型。有办法做到这一点。