【发布时间】:2017-08-01 09:57:00
【问题描述】:
我找不到任何类似的问题,所以我正在写这篇文章。有带有私有字段 IBaseClass 的示例控制器。示例代码如下:
public class TmpController : Controller
{
private IBaseClass _baseClass;
public TmpController()
{
_baseClass = new BaseClass(this);
}
}
public interface IBaseClass
{
//...
}
public class BaseClass : IBaseClass
{
protected TmpController TmpController;
public BaseClass(TmpController tmpController)
{
TmpController = tmpController;
}
//IBaseClass implementation
}
我的问题是;如何使用 Unity 框架将 BaseClass 对象注入 TmpController 的构造函数? 我想让我的控制器“更苗条”。我想将关于验证和准备我的控件(如组合框等)的数据源的逻辑放到不同的类中。在那种非常特殊的情况下,我尝试在我的 .Web 项目中制作某种 SOC,这将使我的控制器更易于阅读和维护。我正在使用每个视图一个控制器的方法,但我遇到的情况非常复杂。目前我有超过 3000 行代码的控制器,而且很难维护,所以我想用它做点什么。 是的,我正在使用服务和存储库,但问题在于 ViewModel 的验证、将 ViewModel 对象映射到 DTO 和向后映射、准备给定组件的数据源等。
【问题讨论】:
-
你的构造函数在这里搞错了。您需要将
IBaseClass注入TmpController,而不是相反。 -
#Daniel Corzo 我认为你错了。该链接通常是关于 c# case 而不是 asp.net mvc,它是关于不同的问题“指定要使用的 Unity IoC 容器的构造函数”
-
DavidG 没有那么简单,因为 BaseClass(TmpController tmpController) 构造函数。
-
@RazemPonad-kilo 是的,这就是我的意思,你真的认为这是个好主意吗?我当然不会。
标签: c# asp.net-mvc unity-container