在单个控制器中注入多个服务.NetCore是最佳实践

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

这是我的控制器:

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

       // db = context;

    }

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

评论
afuga
afuga

我认为这与最佳做法无关...

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

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;
    }

Of course your ctor-line may be a bit longer but that is not an issue.

有什么选择? 您可以将三个接口包装成一个第四接口。但为什么?

点赞
评论