2017-08-22 20 views
0

假设我有这样的如何在具有构造函数的类上使用Unity实现DI - mvc?

public interface ILienholderBusinessService 
    { 
     string GetCoverage(IList<PolicyVinRequest> InputList); 
    } 

public class LienholderBusinessService : ILienholderBusinessService 
    { 
     public ILienholderPolicySearchDataService LienholderPolicySearchDataService { get; set; } 

     public LienholderBusinessService(ILienholderPolicySearchDataService LienholderPolicySearchDataService) 
     { 
      this.LienholderPolicySearchDataService =LienholderPolicySearchDataService ; 
     } 
     public string GetCoverage(IList<PolicyVinRequest> InputList) 
     { 
      return "my string"; 

     } 
    } 

一个接口和类我有这样

public class InsuranceVerificationPortalController : Controller 
    { 
     public ILienholderBusinessService LienholderBusinessService { get; set; } 
     public InsuranceVerificationPortalController(ILienholderBusinessService LienholderBusinessService) 
     { 
      this.LienholderBusinessService = LienholderBusinessService; 
     } 
} 

控制器现在,当我试图实现我的MVC团结,我得到错误,如

你是否缺少任何类型

如何在具有构造函数的类上实现使用Unity的DI

回答

1

您必须为需要解析具体类型的所有接口注册映射。从公布的代码,这将是ILienholderBusinessServiceILienholderPolicySearchDataService

container.RegisterType<ILienholderBusinessService, LienholderBusinessService>(); 
container.RegisterType<ILienholderPolicySearchDataService, LienholderPolicySearchDataService>(); 

这可能是的ILienholderPolicySearchDataService的实施还取决于接口/抽象类(如IRepository<T>)。如果是这种情况,则需要为这些映射创建映射。

默认情况下,Unity将选择参数数量最多的构造函数,因此如果需要选择另一个构造函数,可以使用InjectionConstructor。例如

container.RegisterType<ILienholderPolicySearchDataService, LienholderPolicySearchDataService>(
    new InjectionConstructor(typeof(IRepository<Policy>))); 
相关问题