产品服务的构造函数如下所示:
ProductService(IValidationDictionary validationDictionary, IProductRepository repository)
并在默认控制器构造函数中创建它的实例如下:
public ProductController()
{
_service = new ProductService(new ModelStateWrapper(this.ModelState), new roductRepository());
}
如果我想使用Unity for DI,显然应该使用第二个构造函数。
public ProductController(IProductService service)
{
_service = service;
}
但后来我不知道配置Unity注入ProductServise的第一个参数,因为ModelStateWrapper使用来自控制器的ModelState,它是在控制器内部创建的,不能注入。是否可以将这种依赖注入ProductService?
答案 0 :(得分:0)
思考。
以下是您要做的事情:
你有一个恶性循环,这就是你不能这样做的原因。
我不赞成实施Unity,但从概念上讲,你需要打破这个圈子,如下:
AFAIK unity确实支持属性注入,但它要求您将属性放到属性上。如果我是你,我会考虑使用侵入性较小的容器(几乎任何其他容器都更好)。