我有控制器,我在那儿做DI。我有1个带有接口注入的构造函数。因此,我创建了一个没有任何参数的Default构造函数。 (因为如果我们不这样做,那么问题将出现为“确保控制器具有无参数的公共构造函数”)
我有以下参数化的构造函数:
private IDAL DAL;
private IBLL BLL;
public ABCController(IDAL DalLayer, IBLL BllLayer)
{
DAL = DalLayer;
BLL = BllLayer;
}
如何在下面的无参数构造函数中调用此构造函数?我用过:this()
,,但是这里的问题是抛出DalLayer,BllLayer未定义。因为这些是在其他构造函数中声明的:
public ABCController():this(DalLayer,BllLayer)
{
}
如何解决该问题?
答案 0 :(得分:0)
这里的问题是用户正在使用Unity.MVC5,但是需要Unity.WEbAPI。用户假设Unity框架应该相同并且应该包含所有类型(即WEbAPI,.net,Mvc,mvp等。),但事实并非如此。 Unity框架需要特定于需求。
由于所有Unity框架的解析器都不相同。
答案 1 :(得分:-1)
您可以创建一个负责创建对象的工厂。不幸的是,您没有指定将哪个库用于DL。如果使用ninject,则有一种方法可以让您将其他参数传递给对象以进行注入
例如MyClass m = kernel.Get<MyClass>( new ConstructorArgument( "i", 2) );
跟随this topic
我不了解其他DL库中的外观。