4

インターフェイスをエクスポート用にマークして、すべての派生クラスをインポートできるようにすることはできますか?

[Export( typeof( IMyInterface ) )]
public interface IMyInterface { ... }

[Import( typeof( IMyInterface ) )]
private readonly ICollection<IMyInterface> m_Concretes = new Collection<IPlugin>();

IMyInterfaceこの例でどのクラスが実装されているかわかりません。[Export]クラス自体は MEF について何も知らず、属性を使用しません。

すべてのクラスにマークを付けない限り、[Export]うまくいかないようです。

4

3 に答える 3

4

現在のプレビューでは、インターフェイスに [PartExportsInherited] 属性を (Export 属性と共に) 配置することを試すことができます。ただし、これがインターフェイスで機能するかどうかはわかりません。

インターフェイスにエクスポートを配置するためのサポートを追加する予定です。

于 2009-06-16T13:45:18.683 に答える
3

はい、codeplex の現在のプレビューでは、インターフェイスを PartExportsInherited と Export の両方でマークして、すべての実装者を自動的にエクスポートすることができます。今後のプレビュー リリースでは、おそらく [InheritedExport] のような単一の属性を配置するように、これを合理化する予定です。

編集: MEF プレビュー 6 では、インターフェイスに InheritedExport 属性を配置することでこれを実行できるようになりました。

于 2009-06-20T02:31:44.760 に答える