2011-11-07 8 views
0

私のアプリケーション用のプラグインアーキテクチャを実装する必要があります。C#.NET 2.0での追加インターフェイスライブラリなしでのプラグインアーキテクチャの実装

実行時にロードする必要のあるメインアプリケーションとライブラリがあります。ダイナミックコール中にDLLを正しく処理するために、DLLで定義されたクラスについて知るために、私のメインアプリケーションが必要です。

私はこの目標を達成するためにInterfaceを使用して追加のDLLを実装する必要がありますか、これを行うには別の方法がありますか?

答えて

0

Assembly.Loadを使用してライブラリを読み込むことができます。次に、インスタンス化する必要のある型を検出する方法が必要です。インターフェース(つまりIPlugin)でクラスをマークし、IsAssignableFromメソッドを使用して、検査しているタイプをIPluginタイプに割り当てることができるかどうかを確認できます。もう1つの方法は、カスタム属性でクラスをマークし、検査するタイプにその属性(PluginAttributeなど)があるかどうかを確認する方法です。どちらの場合でも、メインアプリケーションとプラグインライブラリで参照できるように、インターフェイスまたは属性クラスを第3ライブラリに配置する必要があります。

+0

ありがとう、私はあなたに私の質問のための正しい答えを与えたと思います。 – yurart

0

Assembly.Loadを使用して、リフレクションを使用して、共有インターフェイス/属性の種類を確認できます。

+0

はい、私はAssembly.Loadの使い方を理解しています。また、私は共通インタフェースを使用する必要があることを理解しています。これはdllで実装されており、私の主なアプリケーションでこのdllにアクセスするのに使用されています。インターフェイスを共有するにはどうしたらいいですか?私はそれで追加のアセンブリを作成する必要がありますか? – yurart

0

Managed Extensibility Frameworkとお考えですか?リンクにも素晴らしいサンプルがあります

+0

私は.NET 2.0を使用しなければならないので、上位バージョンの.NETでのみ利用可能なMEFは使用できません。 – yurart

関連する問題