如何从默认构造函数调用参数化的构造函数?

时间:2018-09-12 11:43:55

标签: c#

我有控制器,我在那儿做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)
{

}

如何解决该问题?

2 个答案:

答案 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库中的外观。

相关问题