我正在研究使用依赖注入和 autofac 的 ASP.NET MVC3 解决方案。我们的控制器是由 autofac 正确创建的,并且所有需要的对象都被正确传入。这些对象通常包括将域对象转换为 MVC(视图)模型的服务、存储库和映射器。所以控制器构造函数看起来有点像:
public abcController(
ILogger logger,
IabcRepository abcRepository,
IabcService abcService,
IMapper<AbcDomain, AbcViewModel> abcMapper,
...
)
不幸的是,这些构造函数参数列表往往会很快增长。我们的一些控制器现在需要 60 个或更多参数。
我们是否在这里创建了一些反模式?
编辑
我应该提到我们尝试遵循薄控制器模式。此外,这些参数中的大多数往往是映射器——大约 66%。控制方法通常非常简单,并遵循以下任一模式:
- 基于参数调用适当的服务或存储库
- 使用映射器将结果转换为适当的视图模型
- 将视图模型传递给视图
或者这种模式:
- 从 post action 接收模型
- 使用映射器将其转换为适当的域对象
- 使用域对象调用适当的服务或存储库