5

コンパイル時に型にExport属性が適用されているのとまったく同じように、実行時にMEFExport属性を型に動的に適用したいと思います。

これを行う簡単な方法はありますか?

それを除けば、これを行うための複雑な方法はありますか?

4

2 に答える 2

7

.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 で使用できるようにすることもできます。

于 2010-11-18T09:35:22.623 に答える
1

100% 確信はありませんが、MEF でそれが可能だとは思いません。同様の動作を提供するために使用する 1 つのパターンは、ファクトリ / プロバイダー パターンです。

interface IData {} 

interface IDataProvider {
  IData Data { get; set; }
}

[Export(IDataProvider)]
class DataProvider : IDataProvider {
  public IData { get; set; }
}

このパターンを使用して、 の実装IDataを使用したい値に動的に更新できます。

于 2010-11-17T22:09:37.673 に答える