インポートコンストラクタが単一の依存関係を要求し、この依存関係の実装が複数ある場合、最も優先度の高い(メタデータ)実装(エクスポート)が行われるように、MEFコンポジションをオーバーライドできますか?MEFコンポジションのオーバーライド
[Export(typeof(IService))]
[ExportMetadata("Priority", 1)]
public class Service1 : IService
{
}
[Export(typeof(IService))]
[ExportMetadata("Priority", 2)]
public class Service2 : IService
{
}
public interface IService
{
}
public class ServiceWithDependencies
{
[ImportingConstructor]
public ServiceWithDependencies(IService service)
{
}
}
IServiceの複数の実装があるため、ServiceWithDependenciesは通常満たされません。しかし、MEF(override/intercept something)を変更して、優先度メタデータを使用し、ServiceWithDependenciesコンストラクタに最も高い優先順位を持つ実装を注入したいと思います。
編集1
私はMEFは、私は物事を行う方法を指示する必要はありません。私はそれができるだけ目に見えないようにしたい。さらに、これはフレームワークのためのものであり、私は人々が依存関係をどのように必要とするかを制御していません。基本的なコンストラクタインジェクションをサポートする必要があります。私は[ImportMany]について知っていますが、この質問はコンストラクタインジェクションについてのものです。
私は遅いですが、これがどのようにコンストラクタインジェクションに役立つか分かりません。 – W3Max
コンストラクタインジェクションとコンフリクトがないので、コンストラクタインジェクションも使用します。 –
問題があるとは言わなかったが、私はそれがどのように機能するのか分からないと言った。もう一度申し訳ありませんが、私はMEF界の初心者です。上の例の文脈で説明できますか? – W3Max