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

How to stop using Protobuf-Net inheritance and use inherited classes directly?

我有一个继承设置 classes 继承自一个基础 class,我想单独(反)序列化(示例)

[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 并移动到另一个程序集以独立使用,那么(反)序列化仍然是可能的(进行或不进行某种转换)无法访问 GlobalSettings class?

继承是序列化模型的基本组成部分,尤其是,如果您用Deserialize<BaseSettings> 来谈论的话。如果您 Deserialize<GlobalSettings>Deserialize<UserSettings> 之类的事情,那么您也许可以删除 [ProtoInclude],但随后问题就变成了通告BaseSettings 的成员进入子类型。有很多方法可以做到这一点。