在教程Validating with a service layer产品服务的构造函数如下所示:
ProductService(IValidationDictionary validationDictionary, IProductRepository repository)
它在默认 Controller 构造函数中的实例是这样创建的:
public ProductController()
{
_service = new ProductService(new ModelStateWrapper(this.ModelState), new roductRepository());
}
如果我想将 Unity 用于 DI,显然应该使用第二个构造函数。
public ProductController(IProductService service)
{
_service = service;
}
但是后来我不知道配置Unity来注入(inject)ProductServise的第一个参数,因为ModelStateWrapper使用来自 Controller 的ModelState,它是在 Controller 内部创建的,不能注入(inject)。是否可以将这种依赖注入(inject)ProductService?
最佳答案
思考。
这是您要执行的操作:
你有一个恶性循环,这就是你做不到的原因。
我不知道 Unity 的实现,但从概念上讲,您需要打破循环,如下所示:
AFAIK unity 确实支持属性注入(inject),但它需要您将属性放到属性上。如果我是你,我会考虑使用侵入性较小的容器(几乎任何其他容器都更好)。
关于asp.net-mvc - 依赖注入(inject)和 ModelStateWrapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/772840/