2014-12-04 1 views
1

내 시나리오는 다음과 같다 특정 값에 따라 런타임에 바인딩. 나는 이것을 구현하는 세 가지 클래스를 가지고 있는데, Vendor1, Vendor2, Vendor3이라고 부를 수 있습니다.는 Ninject에 문맥

나는 공급 업체의 제품을 사용할 수있게 해주는 웹 API 호출이 있습니다. 물론 각 공급 업체는 자체 확인 가용성 절차를 사용하므로 CheckAvailability 메서드를 제공하는 인터페이스가 필요합니다.

public bool Get(int productId) 
{ 
    var product = GetProductByID(productId); 
    switch(product.VendorId) 
    { 
     case 1: 
      return Vendor1(CheckAvailability(product.VendorProductCode)); 
      break; 
     case 2: 
      return Vendor2(CheckAvailability(product.VendorProductCode)); 
      break; 
     case 3: 
      return Vendor3(CheckAvailability(product.VendorProductCode)); 
      break; 
     default: 
      return false; 
      break; 
    } 
} 

이 매우 단순하고 물론 나는 그것을 좋아하지 않아 :

그래서 내 전화에 내가 좋아하는 뭔가가있다.

public bool Get(int productId) 
{ 
    var product = GetProductByID(productId); 
    return IVendor.CheckAvailability(product.VendorProductCode) 
} 

과 같이 호출 할 수 있고 IVendor는 Ninject를 통해 필요한 모든 것으로 호출 될 수 있기를 바랍니다. 내가 뭔가 미친 게 묻는거야? 그게 가능한가?

+1

이 논리를 구현할 팩토리를 사용해야합니다. 불행히도 우리는 아직 개념적으로 할 수있는 수준이 아닙니다. 그러나 공장 옵션은 낮은 수준에서 실행되어 올바른 구현을 제공합니다. – Chris

+0

예를들 수 있습니까? –

+0

나는 오늘 밤에 나중에 할 수 있었다.. 현재 직장에서 – Chris

답변

0

이것 좀보세요 : stackoverflow.com/questions/10285946/ioc-ninject-and-factories. 만족 스러울 때 해결 된 것으로 표시해주세요.