エクスポート属性がその型に適用されているかのように MEF で型をエクスポートするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4209603

質問

コンパイル時に型に Export 属性が適用されたかのように、実行時に MEF Export 属性を型に動的に適用したいと考えています。

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

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

役に立ちましたか?

解決

.NET 4.5 を使用する余裕がある場合 (Windows XP のサポートを終了することを意味します)、MEF を使用できるようになりました。 属性なしの登録 別名 従来モデル.

.NET4 以前の MEF プレビュー リリースでは、これはそのままではサポートされていませんが、独自の実装を作成することで MEF を拡張できます。 エクスポートプロバイダー または ComposablePartCatalog.

MEF Contrib Fluent 定義プロバイダー メソッド呼び出しによってインポートとエクスポートを登録できるようにする実装です。

MEF Contrib 構成可能な定義の提供r は、XML ファイルでインポートとエクスポートを設定できるもう 1 つのオプションです。

さらに別のオプションは、次のように登録することです。 オートファク そしてそれを使用します MEFの統合 autofac コンポーネントを MEF で使用できるようにします。

他のヒント

私がいない、100%確信しているが、私はそれがMEFで行うことが可能だとは思いません。一つのパターンは、工場/プロバイダパターンですが、同様の動作を提供するために使用します。

interface IData {} 

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

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

あなたは、動的に使用したい値にIDataの実装を更新するには、このパターンを使用することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top