1

わかりました、プラグインの線に沿って考えてください。

私は独自のdllを持っており、独自の機能を備えています。サードパーティの dll が存在する場合は、その dll から内部のクラスを拡張しています。

サードパーティの DLL が見つからない場合を除いて、すべてがうまく機能します。これが問題の核心です。

dll が存在しない場合、次の例外が発生します。

「ファイルまたはアセンブリ 'SOME_THIRD_PARTY_ASSEMBLY, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。指定されたファイルが見つかりません。」

アイデアは、サード パーティの dll が存在する場合は追加機能を許可し、存在しない場合は機能を許可しないことです。

リフレクションを使用して型が存在するかどうかをテストできることはわかっていますが、コードのその部分に到達するには、上記の例外を通過する必要があります。

クラスが利用可能かどうかを知る必要があるだけではなく、クラスも拡張しています。

したがって、MY dll をコンパイルするには、Visual Studio でサード パーティの dll への参照を追加する必要があります。

この例外をどこかでキャッチできますか? これについては別の方法で行う必要がありますか?

4

2 に答える 2

2

サード パーティの DLL を拡張していたコードを別の DLL に分離できます。次に、「拡張マネージャー」dll で構成ファイルを使用して、拡張アセンブリをサード パーティのアセンブリと一致させます。

したがって、構成ファイルには、「someClass;inSome3rdPartDll」と「yourClass;inYourDll」のような 2 つのエントリを持つ項目が含まれる可能性があります。

構成ファイルを調べて、リストされているサード パーティ アセンブリが存在するかどうかを確認し、存在する場合は、関連するアセンブリをアプリ ドメインに読み込みます。

将来のサード パーティ アセンブリを拡張する場合は、dll を追加し、構成ファイルに行を追加するだけです。

アプリ ドメインへのアセンブリの読み込みに関するヘルプへのリンクを次に示します。

于 2013-04-15T14:04:48.917 に答える
0

また、MEF を調べて、構成を活用してこれを達成することもできます。

https://mef.codeplex.com

于 2013-04-15T14:10:27.677 に答える