WPF MEF和第三方库

时间:2016-03-22 15:29:42

标签: c# .net wpf ninject mef

我有第三方dll并且在这个dll中是这样的层次结构:类Node实现接口INode。这个DLL使用Ninject绑定。我的应用程序使用此dll和Prism和MEF作为IoC容器。我以前没有在Prism和MEF中练习,所以我想做的一件事就是将INode绑定到Node。 我没有访问INode和Node的权限,所以写一些我不能写的东西:

[Export(typeof(INode))]
class Node : INode{...}

在Ninject中我会这样做:

Bind<INode>().To<Node>();

我能在MEF做类似的事情吗?日Thnx。

1 个答案:

答案 0 :(得分:0)

看看MEF's Convention Model。您可以将其用于导出您无法控制的类型。例如:

var registration = new RegistrationBuilder();
registration.ForType<Node>().Export<INode>();
var catalog = new AssemblyCatalog(typeof(Node).Assembly, registration);
var container = new CompositionContainer(catalog);

另一种方法是在您自己的代码中继承Node并导出它:

[Export(typeof(INode))]
class MyNode : Node { }