public interface IPlugin { object CallCustomMethod(string methodName, object[] parameters); }
0
0
このようなプラグインアーキテクチャを作成しようとしています。 + * IPlugin *:すべてのプラグインが実装する必要があるインターフェイス。 + * NormalPlugin *:通常のプラグイン。 + * ComplexPlugin *:基本メソッドの実装に加えて、いくつかのカスタムメソッドを持つプラグイン。 + * HostApp *:IPluginが何であるかを知っているアプリ。
現在、ホストアプリはコンパイル時にComplexPluginを持ち、NormalPluginを動的にロードします。 ホストがComplexPluginに定義を持っている必要があるため、ホストはカスタムメソッドを呼び出すことができるからです。 + * 1)*これを達成するためのより良い方法はありますか? コンパイル時にホストアプリへの参照としていくつかのプラグインを追加することは、私には少し不自由に見えるからです。
2)*私は使用してみました:
public interface IPlugin { object CallCustomMethod(string methodName, object[] parameters); }
ただし、CallCustomMethodが複合型を返す場合、アプリはキャストする複合型を知る必要があります。 前もって感謝します
1 Answer
0
アプリがCallCustomMethod関数以外を使用してComplexPlugInのカスタムメソッドを呼び出さない場合、ComplexPlugInにキャストする必要はないはずです。
IPlugIn foo =(IPlugIn)myComplexObject.CallCustomMethod( "GenerateNewComplexPlugIn"、new object [] \ {0}); + foo.CallCustomMethod( "AnotherComplexMethod"、null);