我为我的一个程序创建了自己的插件架构。
基本上 Plugin 是我所有插件的基类,并说我有 PluginA : Plugin 和 PluginB : Plugin 之类的插件。
public class Plugin
{
private static Plugin _instance;
public static Plugin Instance { get { return Plugin._instance; } }
}
现在像往常一样,我的每个插件都有其他东西,比如表单和其他类。从这些类中,我想访问当前的插件实例,例如;
Plugin.Instance.Settings()
如果我确实在插件 ctor 中分配 _instance 字段,例如;
public Plugin(GlobalSettings gs, PluginSettings ps)
{
Plugin._instance=this;
}
然后对于每个加载的插件,实例被覆盖,我得到奇怪的结果,比如 PluginB.Instance 返回一个 PluginA 的实例。
我知道单例似乎不是这样做的正确方法,但我无法提供另一种解决方案。也许 multiton 可以解决这个问题,但我不希望我的插件作者去
Plugin.Instance["PluginB"]
似乎无关紧要的所有时间。
谢谢你的帮助。