2017-08-22 3 views
0

は、私は今、私は私のMVCでの統一を実現しようとすると、私はコンストラクタを持つクラスでUnityを使ってDIを実装する方法 - mvc?

のようなエラーが出ます。この

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

のようなコントローラを持っているこの

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"; 

     } 
    } 

ようなインターフェイスとクラスがあるとし

あなたは欠けていますか?

コンストラクタを持つクラスで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>))); 
関連する問題