これを行う方法についての記事やリンクが見つからないようです。これは明らかな問題のようです(たとえば、ソースコードがない場合や、MEF用に作成されていない既存のタイプを使用したい場合)。
3885 次
2 に答える
15
CompositionContainer.ComposeExportedValue
既存のオブジェクトインスタンスをコンテナに追加する場合は、次のメソッドを使用できます。
container.ComposeExportedValue<MyClass>(myClassInstance);
あなたが本当に探しているのは、おそらく新しい規則ベースのプログラミングモデルであり、属性ではなく命名規則に基づいてパーツを作成できますが、この機能は.NET4.5でのみ使用できます。
myAssembly
使用例(これは、を実装するIController
すべてのタイプをエクスポートしますIController
):
var registration = new RegistrationBuilder();
registration.ForTypesDerivedFrom<IController>()
.Export<IController>();
var catalog = new AssemblyCatalog(myAssembly, registration);
var container = new CompositionContainer(catalog);
MEFの新しいコンベンションモデルの使用方法の良い例は、ここにあります。
お役に立てれば。
于 2012-11-18T08:18:52.710 に答える
10
遺伝性エクスポート属性でインターフェースをマークすると、カタログ内のすべてのモジュールがエクスポートされ、エクスポート属性でマークされているかどうかに関係なく、このインターフェースが実装されます。
インターフェース:
[InheritedExport]
public interface IContract { ... }
モジュール:
// No [Export] attribute
public class ModuleImplementation : IContract { ... }
これで、MEFがモジュールを注入します。
于 2012-11-22T20:21:18.160 に答える