2014-12-04 58 views
1

我的情況是這樣的:Ninject語境綁定在運行時根據特定值

我有一個接口IVendor。我有三個不同的類實現這一點,讓我們打電話給他們Vendor1Vendor2,Vendor3

我有一個網絡API調用,這將使我可以獲得供應商的產品。當然,每個供應商都有自己的檢查可用性程序,因此該界面公開了一種方法。

所以在我的電話,我有這樣的:

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 2014-12-04 17:55:02

+0

是否可以舉個例子? – 2014-12-04 17:56:35

+0

我今晚可以晚上..在當時的工作 – Chris 2014-12-04 17:58:19

回答

0

看看這個:stackoverflow.com/questions/10285946/ioc-ninject-and-factories。當你滿意時,請標記爲已解決。