我正在努力理解MEF。 有一件事我不明白,假设我有一个名为ISomething的接口,它是一个合约,在一个文件夹中包含了多个程序集,而我并不知道其中有多少个实现了ISomething接口的程序集,也不知道哪个程序集包含了这个接口的实现。 如果我创建一个使用MEF的主机应用程序,并想要获取一个ISomething接口的实例,但只需要一个,那么MEF如何决定将给我哪个实现? 或者类似于通用的IoC容器,我该如何告诉它应该使用哪个实现? 感谢您提前的回答。
对于MEF而言,如果您有许多可满足导入的输出,则有两个选择: 更改您的导入以使用[ImportMany]。在运行时决定使用哪个导入项来满足您的契约,可能只选择第一个或随机选择一个。 结合元数据使用[ImportMany],以便决定要使用哪个导入项。