首页 > 解决方案 > 在单个控制器中注入多个服务 .NetCore 什么是最佳实践

问题描述

我不确定我在做什么是最佳实践,或者如果它不是我应该做什么,在.net核心中你注册你的服务然后将它注入你想要的控制器中吗?现在如果我必须在我的控制器中注入3个服务或假设n个服务,我应该在我的构造函数中传递n个参数,但这不是太多了吗?

这是我的控制器:

 public class AcessInfoController : ControllerBase
{
    // private DbContextClass db;
    private IAccessInfo _acess;
  public  AcessInfoController(IAccessInfo access)
    {
        _acess = access;

       // db = context;

    }

现在我需要注入另一个 IAnotherInterface ,让它更具可读性的最佳做法是什么?

标签: asp.net-core

解决方案


我认为这与最佳实践无关...

如果您有多个服务在做不同的事情并且您需要它们在控制器中注入它们的方式如下:

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 可能会更长一些,但这不是问题。

什么是替代方案?您可以将三个接口包装在第四个接口中。但为什么?


推荐阅读