如果我使用依赖注入,如何在 Web API 控制器构造函数中传递多个接口参数?

How to pass multiple interface parameters in a web API Controller contructor if I am using Dependency Injection?

我正在使用依赖注入来调用我的对象,那么有没有一种更简洁的方法可以在构造函数中添加更多参数,而不会使构造函数签名像下面的情况一样长?

   public ObjectController(IParam1 param1, IParam2 param2, IParam3 param3, 
   IParam4 param4,IParam5 param6,IParam7 param8)
    {
        _param1= param1;
        _param2 = param2;
        _param3= param3;
        _param4= param4;
        _param5= param5;
        _param6= param6;
        _param7= param7;
        _param8= param8;
    }

正如其他人所说,您的控制器责任太大。我建议您将功能分解为 Services/Business 逻辑服务。

public class UserService : IUserService {
    
    IParam _param;
    IParam2 _param2;
    
    public UserService(IParam param, IParam2 param2) {
        _param = param;
        _param2 = param2;
    }
}


public class LoginService : ILoginService {
    
    IParam _param;
    IParam2 _param2;
    
    public UserService(IParam param, IParam2 param2) {
        _param = param;
        _param2 = param2;
    }
}

然后你可以将它注入你的控制器

public Controller(IUserService userService, ILoginService loginService) { ... }

如果它仍然太多,我建议您也拆分控制器。