2016-08-09 4 views
2

MEFを使用してプラグインマネージャを構築しています。理想的には、既存のコードを変更する必要はありません。 使用するすべてのクラスは、(既存の)属性[MyPlugin]を持っています - RegistrationBuilderやその他のメソッドを使用して、この属性に基づいて暗黙的にエクスポートできますか?事前にMEF既存の属性からエクスポートする

おかげで、私はどのようにの一切の言及を見つけることができるされていませんでしたか、これはなんとかです、インターフェースに基づいてエクスポートしない兼ね備えている場合(私はこれをやるのに私がしなければならない場合)

+0

あなたの問題は何かを理解することはできません...あなたのプラグインをエクスポートするか、それらを再度インポートしますか? – lokusking

+0

それはMEFなので、プラグインマネージャは[インポート]を使ってプラグインをインポートする前に、プラグインをエクスポートとしてタグ付けする必要があります(これを暗黙的に行う方法)。私の問題は、[エクスポート]属性を使用するのではなく、暗黙的にエクスポートすることです。クラスを変更せずにインポートする必要がありますが、そのためにはエクスポートする必要があります – Bobsicles

答えて

0

これはRegistrationBuilderで簡単に行うことができます - ちょうどのみに述語を持つMyPlugin属性を持つタイプを選択します - もう一つは、ちょうどあなたが誤ってきた場合には例外を回避最初の条件は重要なものは本当にある

var builder = new RegistrationBuilder(); 
builder.ForTypesMatching(t => t.IsDefined(typeof(MyPluginAttribute)) && 
           typeof(IPlugin).IsAssignableFrom(t)) 
     .Export<IPlugin>(); 

IPluginにを実装していないクラスをマークしました属性。

関連する問題