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