也许我对自己太苛刻了,但我真的很想知道这一点。我有一个非常顽皮的构造函数,所以我想我可以使用 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))
所以我发现我无法像这样导出两个类实例:
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; }
...
}
我需要两个不同的 ImportingConstructor 属性和两个带有 contractName 的 Exports ...
...并像这样修改 BussinesProcessLoader 的构造函数:
[ImportingConstructor]
public BussinesProcessLoader([Import("ResourceLoader")] ILoader<List<Resource>> resourceLoader, [Import("ProjectsLoader")] ILoader<List<Project>> projectsLoader)
{
this.resourceLoader = resourceLoader;
this.projectsLoader = projectsLoader;
}
甚至有可能做到这一点吗?任何帮助,将不胜感激。