【发布时间】:2010-11-12 14:52:16
【问题描述】:
我已经为我的一个程序创建了自己的插件架构。
基本上 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"]
似乎无关紧要的所有时间。
感谢您的帮助。
【问题讨论】:
标签: c# plugins singleton instance multiton