我有一个使用插件的应用程序。在创建了其中几个之后,我发现在这里和那里重复了大量的代码,所以我想提取一个超级“插件库”。
以前的重构我有以下结构:
重构后,我有下一个:
我目前没有找到一种方法来模拟插件引擎具有插件设置类型的属性设置以及插件引擎库< / em>具有插件设置基础类型的属性设置。我觉得应该以某种方式声明插件引擎库的settings属性应该是插件引擎的settings属性的“强制转换”,并模拟它们都是相同的财产。
我不确定问题是否得到了充分解释。随意请求澄清。
感谢。
答案 0 :(得分:1)
您可以使用泛型。创建通用基类并将通用参数约束指定为类型PluginSettingsBase
。
abstract class PluginEngineBase<T>
where T: PluginSettingsBase
{
public abstract T Settings { get; set; }
}
继承自PluginsSettings
类参数化的基类(因此它继承自PluginSettingsBase
)
class PluginEngine : PluginEngineBase<PluginsSettings>
{
public PluginSettings Settings { get; set; }
}
与PluginData
相同。
答案 1 :(得分:0)
我找到了一种方法:
基类:
class PluginEngineBase
{
public PluginSettingsBase Settings { get; set; }
}
传承:
class PluginEngine : PluginEngineBase
{
public PluginSettings Settings
{
get
{
return (PluginSettings)base.Settings;
}
set
{
base.Settings = value;
}
}
}