【发布时间】:2016-12-22 12:16:51
【问题描述】:
在我们之前的应用程序中,我们使用了 StructureMap,我们可以编写非常少的代码。
在每个服务之前,我们添加了如下依赖项:
[SetterProperty]
public IXService XService { get; set; }
在构造函数中
ObjectFactory.BuildUp(this);
然后在测试中我们可以简单地实例化它
var service = new XService();
现在,我们启动另一个应用程序并使用 asp.net 核心内置 DI 容器。 看起来我们应该为每个测试编写大量代码和非常长的构造函数:
private readonly ILogger<AccountsController> _logger;
private readonly IMapper _mapper;
private readonly IAccountBlService _accountBlService;
private readonly IValidationHelper _validationHelper;
private readonly IValidator<AccountDTO> _accountDTOValidator;
private readonly Example _example;
private readonly IConfiguration _configuration;
public AccountsController(BillingContext context, ILogger<AccountsController> logger, IMapper mapper, IAccountBlService accountBlService,
IValidationHelper validationHelper, IValidator<AccountDTO> accountDTOValidator, IOptions<Example> example, IConfiguration configuration)
{
_logger = logger;
_mapper = mapper;
_accountBlService = accountBlService;
_validationHelper = validationHelper;
_accountDTOValidator = accountDTOValidator;
_configuration = configuration;
_example = example.Value;
}
我们没有找到更短的方法吗?是在不久的将来计划的吗?我们应该使用 StructureMap 代替内置容器吗?还是有缺点?谢谢!
【问题讨论】:
标签: dependency-injection asp.net-core ioc-container structuremap