1

私は、Win32 および C/C++ でプラグイン アーキテクチャを何年も実行してきましLoadLibraryGetProcAddress

いよいよ C# の登場です。そこに対応する手順は何ですか - アセンブリを動的にロードしますか? それともまったく別のスキーマですか?

4

3 に答える 3

3

一般に、プラグインが期待される場所を調べ、アセンブリをロードし、特定のクラスを探すことができます。通常、プラグインは、ある種のプラグイン基本クラスを拡張するか、インターフェースを実装することによって、自分自身を宣伝します。

別のオプションはMEFで、これも .NET 4 の一部になりますが、プレビュー リリースは現在の .NET フレームワークでも動作します。

于 2010-01-28T09:38:48.617 に答える
1

.Netアプリケーションでは、AppDomainとAppDomain.CurrentAppDomainを使用して、アセンブリをアプリケーションに動的にロードできます。問題は、AppDomainにロードされた後、アセンブリをアンロードできることです。この問題を解決するには、これらをロードできるという回避策があります。別のAppDomainにある種類のアセンブリをアンロードし、それらのアセンブリが不要な場合はいつでもアンロードします。ただし、2つの異なるAppDomainにある2つのアセンブリ間でオブジェクトを渡すのはそれほど簡単ではないため、このアプローチは非常に複雑です。

于 2010-01-28T09:45:32.457 に答える
1

System.Addin 名前空間のクラスを使用できます。このディスカッションを参照してください: MEF と MAF の選択 (System.AddIn)

ここにもデモがあります: AddIn Enabled Applications

もう 1 つの解決策は、非常に強力なMono.AddInを使用することです。

于 2010-01-28T09:43:48.070 に答える