我已经编码了这样的服务:
public interface IMyInterface
{
...
}
[Export(typeof(IMyInterface))]
internal class MyService : IMyInterface
{
...
}
现在,我想在我的主程序中使用MEF导入
MyService
的几个实例。我怎样才能做到这一点 ?
使用
[Import] private IMyInterface MyService { get; set; }
只能得到1个MyService
实例。在我的主程序中,我想在MEF合成之前动态指定
MyService
导入实例的数量。我不想使用
[ImportMany]
,因为我不想在我的MyService
实现中指定导出的数量。你能帮助我吗 ?
最佳答案
您可能不想将其直接导入,而是多次从容器中获取导出的值。因此,您需要将创建策略更改为NonShared,这将强制容器每次实例化一个新实例。
[Export(typeof(IMyInterface)) PartCreationPolicy(CreationPolicy.NonShared)]
internal class MyService : IMyInterface
{
...
}
然后从容器中获取值:
List<IMyInterface> instances = new List<IMyInterface>();
for (int i = 0; i < 10; i++) {
instances.Add(container.GetExportedValue<IMyInterface>());
}
关于c# - 如何使用MEF导入多个实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3288655/