【发布时间】:2010-09-06 22:53:29
【问题描述】:
我的应用程序正在使用 MEF 从外部程序集中导出一些类。这些类是为构造函数注入设置的。我面临的问题是 当我尝试访问这些类时,MEF 正在尝试实例化它们。有没有办法让 Ninject 处理类的实例化?
IEnumerable<Lazy<IMyInterface>> controllers =
mefContainer.GetExports<IMyInterface>();
// The following line throws an error because MEF is
// trying to instantiate a class that requires 5 parameters
IMyInterface firstClass = controllers.First().Value;
更新:
有多个实现IMyInterface 的类,我想选择一个具有特定名称的类,然后让 Ninject 创建它的一个实例。我不确定我是否想要懒惰。
[Export(typeof(IMyInterface))]
public class MyClassOne : IMyInterface {
private MyRepository one;
private YourRepository two;
public MyClassTwo(MyRepository repoOne, YourRepository repoTwo) {
one = repoOne;
two = repoTwo;
}
}
[Export(typeof(IMyInterface))]
public class MyClassTwo : IMyInterface {
private MyRepository one;
private YourRepository two;
public MyClassTwo(MyRepository repoOne, YourRepository repoTwo) {
one = repoOne;
two = repoTwo;
}
}
使用 MEF,我想获取 MyClassOne 或 MyClassTwo,然后让 Ninject 提供 MyRepository 和 YourRepository 的实例(注意,这两个绑定在主程序集中的 Ninject 模块中,并且不是他们所在的大会)
【问题讨论】:
-
我的回答有用吗?如果没有,我想让它变得更好。即使我的答案离题而且我不能给你一个满意的答案,你应该跟进以最大化你的赏金价值,因为其他人也会猜测缺少什么......?
标签: dependency-injection mef ninject