我有一个使用插件的应用程序。在创建了其中几个之后,我发现大量代码在它们上到处重复,所以我想提取一个超级“插件库”。
在重构之前,我有以下结构:
重构后,我有下一个:
我目前没有找到一种方法来模拟插件引擎具有插件设置类型的属性设置和插件引擎基础具有插件设置基础类型的属性设置的事实。我觉得应该以某种方式声明插件引擎基础的设置属性应该是插件引擎的设置属性的“强制转换”,并模拟它们都是相同属性的事实。
我不确定问题是否得到充分解释。随时要求澄清。
谢谢。
我有一个使用插件的应用程序。在创建了其中几个之后,我发现大量代码在它们上到处重复,所以我想提取一个超级“插件库”。
在重构之前,我有以下结构:
重构后,我有下一个:
我目前没有找到一种方法来模拟插件引擎具有插件设置类型的属性设置和插件引擎基础具有插件设置基础类型的属性设置的事实。我觉得应该以某种方式声明插件引擎基础的设置属性应该是插件引擎的设置属性的“强制转换”,并模拟它们都是相同属性的事实。
我不确定问题是否得到充分解释。随时要求澄清。
谢谢。
您可以使用泛型。创建泛型基类并将泛型参数约束指定为 type 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
。
我发现的一种方法:
基类:
class PluginEngineBase
{
public PluginSettingsBase Settings { get; set; }
}
继承人:
class PluginEngine : PluginEngineBase
{
public PluginSettings Settings
{
get
{
return (PluginSettings)base.Settings;
}
set
{
base.Settings = value;
}
}
}