Asp.net mvc 依赖注入和ModelStateWrapper
在教程中,产品服务的构造函数如下所示:Asp.net mvc 依赖注入和ModelStateWrapper,asp.net-mvc,dependency-injection,unity-container,Asp.net Mvc,Dependency Injection,Unity Container,在教程中,产品服务的构造函数如下所示: ProductService(IValidationDictionary validationDictionary, IProductRepository repository) public ProductController() { _service = new ProductService(new ModelStateWrapper(this.ModelState), new roductRepository()); } 其在默
ProductService(IValidationDictionary validationDictionary, IProductRepository repository)
public ProductController()
{
_service = new ProductService(new ModelStateWrapper(this.ModelState), new roductRepository());
}
其在默认控制器构造函数中的实例如下所示:
ProductService(IValidationDictionary validationDictionary, IProductRepository repository)
public ProductController()
{
_service = new ProductService(new ModelStateWrapper(this.ModelState), new roductRepository());
}
如果我想对DI使用Unity,显然应该使用第二个构造函数
public ProductController(IProductService service)
{
_service = service;
}
但我不知道如何配置Unity来注入ProductService的第一个参数,因为ModelStateWrapper使用控制器中的ModelState,它是在控制器内部创建的,不能被注入。有可能将这种依赖注入ProductService吗?想想
以下是您试图做的:
- 为了创建产品控制器,您需要产品服务
- 为了创建产品服务,您需要产品控制器
ProductService(IValidationDictionary validationDictionary, IProductRepository repository)
public ProductController()
{
_service = new ProductService(new ModelStateWrapper(this.ModelState), new roductRepository());
}
- 创建产品控制器而不向其传递产品服务
- 创建产品服务并将产品控制器的模型状态传递给它
- 通过属性注入将产品服务注入产品控制器
AFAIKUnity确实支持属性注入,但它要求您将属性放入属性中。如果我是你,我会考虑使用一个不具侵入性的容器(几乎任何其他的容器都更好)。我通过使用以下通用方法创建UnityHelper来解决此问题:public TManager CreateEntityManager(TInnerInterface innerImplementation){this.RegisterInstance(innerImplementation);返回this.Resolve();},然后执行如下解析:IPProductService target=unity.CreateEntityManager(modelStateWrapper);Thanx感谢您的帮助/erikSuffering面临同样的挑战,但使用ASP.NET核心MVC?有什么建议吗?