コンパイル時に型にExport属性が適用されているのとまったく同じように、実行時にMEFExport属性を型に動的に適用したいと思います。
これを行う簡単な方法はありますか?
それを除けば、これを行うための複雑な方法はありますか?
コンパイル時に型にExport属性が適用されているのとまったく同じように、実行時にMEFExport属性を型に動的に適用したいと思います。
これを行う簡単な方法はありますか?
それを除けば、これを行うための複雑な方法はありますか?
.NET 4.5 を使用する余裕がある場合 (つまり、Windows XP のサポートを中止することを意味します)、MEF の属性のない登録、別名Convention Modelを使用できるようになりました。
.NET4 以前の MEF プレビュー リリースでは、これはそのままではサポートされていませんが、ExportProviderまたはComposablePartCatalogの独自の実装を作成することで MEF を拡張できます。
MEF Contrib Fluent Definition Providerは、メソッド呼び出しによるインポートとエクスポートの登録を可能にする実装です。
MEF Contrib Configurable Definition Providerは、XML ファイルでインポートとエクスポートを設定できるもう 1 つのプロバイダーです。
さらに別のオプションとして、Autofacに登録してから、そのMEF 統合を使用して autofac コンポーネントを MEF で使用できるようにすることもできます。
100% 確信はありませんが、MEF でそれが可能だとは思いません。同様の動作を提供するために使用する 1 つのパターンは、ファクトリ / プロバイダー パターンです。
interface IData {}
interface IDataProvider {
IData Data { get; set; }
}
[Export(IDataProvider)]
class DataProvider : IDataProvider {
public IData { get; set; }
}
このパターンを使用して、 の実装IData
を使用したい値に動的に更新できます。