asp.net-core - 在单个控制器中注入多个服务 .NetCore 什么是最佳实践
问题描述
我不确定我在做什么是最佳实践,或者如果它不是我应该做什么,在.net核心中你注册你的服务然后将它注入你想要的控制器中吗?现在如果我必须在我的控制器中注入3个服务或假设n个服务,我应该在我的构造函数中传递n个参数,但这不是太多了吗?
这是我的控制器:
public class AcessInfoController : ControllerBase
{
// private DbContextClass db;
private IAccessInfo _acess;
public AcessInfoController(IAccessInfo access)
{
_acess = access;
// db = context;
}
现在我需要注入另一个 IAnotherInterface ,让它更具可读性的最佳做法是什么?
解决方案
我认为这与最佳实践无关...
如果您有多个服务在做不同的事情并且您需要它们在控制器中注入它们的方式如下:
public class AcessInfoController : ControllerBase
{
private IAccessInfo _access;
private IAnotherInterface _another;
private IAndAnotherInterface _andAnother;
public AcessInfoController(IAccessInfo access, IAnotherInterface another, IAndAnotherInterface andAnother)
{
_access = access;
_another = another;
_andAnother = andAnother;
}
当然,您的ctor
-line 可能会更长一些,但这不是问题。
什么是替代方案?您可以将三个接口包装在第四个接口中。但为什么?
推荐阅读
- javascript - 确保在数组中同步执行嵌套数组(Promise.all - 在 Promise.all 中)
- flutter - 为什么flutter build web制作的app有时候不能用?
- javascript - flex 容器中的可折叠 div 也会打开其他 div
- python - 抓取 URL 列表的数据
- python - 是否可以在 Python 中检查部分字符串的集合?
- javascript - 弱映射内存泄漏
- jquery - .prop("disabled", true) on click 不适用于 i 元素?
- java - 在java中重新启动信号量
- python - 为 word2vec 实现处理语料库
- c - 如何将变量从批处理文件发送到 C 程序?