1

これについていくつかのチュートリアルがあることを誓ったかもしれませんが、それらを見つけることができないようで、過去にどのようにそれを行ったかを思い出せません(何年もの間、別の会社で)...

私はC#で作業します。私がやったことは、アプリとプラグインがやり取りするために必要なプロパティ/メソッドを備えたインターフェースを作成することだったと思います...

アプリを実行し、プラグインのフォルダーをスキャンし、プラグインをロードして、前述のインターフェイスを介してプラグインを操作します...

上記が正しい方向に進んでいる場合、誰かがプラグインのロードの例、またはそれ以上のチュートリアルを教えてもらえますか?

ありがとう!

4

2 に答える 2

2

それにはたくさんの方法がありますが、簡単です。

フォルダをスキャンします:

string[] files = System.IO.Directory.GetFiles("yourpath", "*.dll");

次に、アセンブリをロードします(上記のファイルごとに)

Assembly.Load or Assembly.LoadFrom

アセンブリからタイプの列挙まで:

Type[] types = assembly.GetTypes();

タイプがインターフェースを実装しているかどうかを確認します

Type t;
YourInterface.IsAssignableFrom(t);

次に、インスタンス化する:

object o = Activator.CreateInstance(t);
YourInterface iface = (YourInterface)o;

それはそれについてです、もちろん例外処理と他のビットは省略されます

一部のDIパッケージは、ユースケースに応じて、非常に便利な場合もあれば、やり過ぎになる場合もあります。

于 2012-11-02T18:41:22.280 に答える
1

おそらく、ManagedExtensibilityFrameworkを確認する価値があります。

http://mef.codeplex.com/

于 2012-11-02T18:18:25.697 に答える