向MEF容器添加一个实例

16

如何将已创建的实例添加到MEF容器/目录中,以便在解析导入时使用。我希望能够使用Unity在其容器上提供的RegisterInstance方法所提供的功能。


MEF不是一个IoC容器,你不应该期望MEF会取代Unity,因为它不是为此而设计的。你可以阅读相关资料:http://www.google.pl/search?sourceid=chrome&ie=UTF-8&q=mef+as+ioc - NOtherDev
2
@A. 我并不指望它能够取代Unity,但目前为止,该项目在没有包含另一个IoC框架的情况下进行得很顺利,而这也是我唯一需要的东西,如果可以用MEF解决这个需求,那么就没有必要再添加另一个框架了。 - Cornelius
MEF2 是一个完整的 IOC。 - stricq
1个回答

23

您可以使用 ComposeExportedValue 函数来实现此操作,如下所示:

var container = new CompositionContainer();
container.ComposeExportedValue<Application>("Application", Application.Current);

1
如果我想给它注册一个名称呢? - Cornelius
1
ComposeExportedValue的另一个重载接受一个字符串作为contractName。我更新了我的示例。 - alexn
1
有人知道如何在 System.Composition 中实现这个吗?(PCL 版本) - tofutim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接