プログラムの1つに独自のプラグインアーキテクチャを作成しました。
基本的に、プラグインは私のすべてのプラグインの基本クラスであり、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のインスタンスを返すなどの奇妙な結果が得られます。
シングルトンがこれを行うのに完全に正しい方法ではないように思われることは知っていますが、私は別の解決策を思いつくことができませんでした。マルチトンでこれを解決できるかもしれませんが、プラグインライターに
Plugin.Instance["PluginB"]
無関係のように見えるすべての時間。
助けてくれてありがとう。