私は自分に厳しすぎるのかもしれませんが、私は本当にこれを知りたいです。私は非常にいたずらなコンストラクターを 1 つ持っているので、MEF を使用して生活をシンプルにできると考えました。しかし、私は正しくありませんでした。私は実際にグーグルを使用しましたが、これに比べて何も見つかりませんでした。
次のようなコンストラクタがあります。
public BussinesProcessLoader(ILoader<List<Resource>> resourceLoader, ILoader<List<Project>> projectsLoader)
{
this.resourceLoader = resourceLoader;
this.projectsLoader = projectsLoader;
}
今、私は MEF を使用して、次のように BussinesProcessLoader を構成させたいと考えています。
new BussinesProcessLoader(new Loader<List<Resource>>(new Projects.Deserializer.ResourceDeserializer(), fileResolver), new Loader<List<Project>>(new ProjectsDeserializer(), fileResolver))
したがって、次のようなクラスの 2 つのインスタンスをエクスポートできないことがわかりました。
internal class Loader<T> : ILoader<T>
{
public Loader(IDeserializer<T> deserializer, FileResolver fileResolver)
{
this.Deserializer = deserializer;
this.FileResolver = fileResolver;
}
public IDeserializer<T> Deserializer { get; set; }
public FileResolver FileResolver { get; set; }
...
}
2 つの異なる ImportingConstructor 属性と、contractName を持つ 2 つの Exports が必要です...
...そして BussinesProcessLoader のコンストラクターを次のように変更します。
[ImportingConstructor]
public BussinesProcessLoader([Import("ResourceLoader")] ILoader<List<Resource>> resourceLoader, [Import("ProjectsLoader")] ILoader<List<Project>> projectsLoader)
{
this.resourceLoader = resourceLoader;
this.projectsLoader = projectsLoader;
}
これを達成することさえ可能ですか?どんな助けでも大歓迎です。