【发布时间】:2019-02-12 18:03:23
【问题描述】:
我在 ASP Core MVC 中有一个控制器。我正在尝试减少构造函数中的依赖注入服务,以便我可以更轻松地开始构建单元测试。但是,我注入了一些仅用于一两个控制器操作的服务。例如,我注入ILocationService,因为在我的几个操作中,我需要查找一个国家Id 号码并使用数据库获取一个ISO Alpha-2 国家代码(例如将ID 号1 映射到“CA”,映射2 到“美国”等)
Asp Core 支持[FromServices] 属性,因此我可以选择将ILocationService 直接注入到我的两个操作中,而不是在控制器构造函数中注入它们。这样做的好处是我不需要总是从每个单元测试中模拟/注入ILocationService 到我的控制器中,并且在编写单元测试时更清楚每个函数所依赖的服务。
明显的缺点是它现在并不完全明显和清楚我的控制器所依赖的服务,因为它们并没有全部分组在构造函数中。
使用[FromServices] 属性可能会产生任何其他具体的挑战、问题或混淆点吗?
【问题讨论】:
-
这个问题的核心是询问使用方法注入是否是一种不好的做法,这是一个固执己见的问题,因此将就此关闭。至少微软认为出于某些原因可能需要它,否则该属性将不存在。
-
我觉得这个问题更适合softwareengineering.stackexchange.com
标签: c# asp.net-core dependency-injection