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



我有控制器,我正在那里做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 库中的外观。

相关内容

最新更新