0

我正在使用SavableModelBase以将配置文件保存到 XML 或从 XML 加载。

我现在有一个案例,我有想要重构为基类的公共属性。

就像是:

class CommonConfig: SavableModelBase<CommonConfig>
{
    /// <summary>
    /// Gets or sets the property value.
    /// </summary>
    public string CommonPath
    {
        get { return GetValue<string>(CommonPathProperty); }
        set { SetValue(CommonPathProperty, value); }
    }

    /// <summary>
    /// Register the Name property so it is known in the class.
    /// </summary>
    public static readonly PropertyData CommonPathProperty = RegisterProperty("CommonPath", typeof(string), string.Empty);
}   

然后我想创建一些SpecificConfig与通用配置共享属性的特定配置(例如)。如果我继承CommonConfigSave()函数的问题是不知道SpecificConfig.

我想我可以使用组合(SpecificConfig将具有 type 的属性CommonConfig),但这看起来/读起来不太好。

有什么建议么?

4

2 回答 2

0

在上述场景中使用:

SpecificConfig.Load(myFile, SerializationMode.Xml);

应该返回CommonConfig。可能它返回 null 因为文件中的类实际上是SpecificConfig.

如果相反,我正在使用:

SpecificConfig.Load<SpecificConfig>(myFile, SerializationMode.Xml);

它按预期工作。

于 2014-03-06T07:52:18.177 回答
0

序列化引擎使用 GetType() 来获取实际类型。因此,您可以使用接口/基类/任何您想要实际调用的 Save() 方法。最后,它将获取实际活动实例类型的属性(因此是继承的)并保存属于该对象的所有属性,包括基类属性。

换句话说,这应该可以正常工作。

于 2013-10-29T09:24:12.863 回答