簡単な背景:MEF:ロードパーツ異なる特性を持っている(プラグイン)
私のチームは、新しい追加するための拡張可能なモデルを提供するために、マイクロソフトのマネージド拡張フレームワーク(MEF)を使用することを決定しました"提供者"を私たちのシステムに追加します。
これにより、新しいサードパーティプロバイダを簡単にプラグインすることができます。
注:私は、MEFが使用して起動して走っていたことに感心しました。
私の質問:
これらのプロバイダは、は、一般的に、我々はプロバイダのデータストリームとプロパティにアクセスする必要があり、実行時にシステムにこれらのプロバイダをロードするときに異なる特性が、それらに関連付けられていますので。
プロパティが異なるために前記プロバイダプラグインを使用するにはどのようなアプローチが必要ですか?彼らはすべて同様の仕事をすることに注意してください。
マイソリューション:
一緒に働くための一貫したインターフェース/ プログラミングモデルが得られサードパーティプロバイダのそれぞれの周りに作成されている「ラッパー」で、その結果、プロバイダが準拠しなければならないインターフェースを作成します。各プロバイダ。
プラグイン=サードパーティのデータソース(プロバイダ)+一般的なインターフェイスの実装。
+ ve: 上記のプラグインには、より複雑なリフレクションベースの動的「プラグ」は必要ありません。
-ve: 各プロバイダのラッパーを記述する必要があります。
さらに注意(我々は関係なく、MEFのエクスポートタグを追加する必要があります):インターフェース/ラッパーアプローチは最も簡単になります私には
を私はリフレクションベースのアプローチを検討するよう指示されたかもしれリフレクションを利用して、実行時にシステムに公開されるプロパティを発見します。
私は他のどの解決策にも賛成ではありませんが、コミュニティの考えを聞くことに興味があります(ほとんどが私よりも経験が豊富です)。
ありがとうございました。
マイナーまた、RuleAttributeクラスもでマークされるべきである。 [AttributeUsage(偽AllowMultiple =)] –
更新、おかげでニック! StackOverflowのためのその機能が好きで、編集することができます;-) –