9
有沒有一種方法可以註冊一個接口,該接口由多個具體類使用[simple-injector]實現並且不使用模板接口?使用單一接口註冊多個實現
說,我們有2類MyClass1
和Myclass2
和這兩個類都實現IInterface1
現在,使用[簡單的注射器]我們沒能做到這一點
container.Register<IInterface1, Myclass1>();
container.Register<IInterface1, Myclass2>();
將現有的界面模板界面在現有的代碼庫上有點辛苦。希望有一些更容易。
問題與SimpleInjector是,註冊多個實現了一個接口之後,就沒有辦法來指定註冊的情況下,應給定接口返回。在您的示例中,您無法指定在請求IInterface1時返回類Myclass2的實例。像Ninject這樣的其他IoC容器允許爲相同服務(接口)「註冊」每個註冊,以便您可以在解決時間以後消除歧義。 – Lester
@Lester:如果你需要這個,確保你沒有違反[Liskov Substitution Principle](https://en.wikipedia.org/wiki/Liskov_substitution_principle)。但無論哪種方式,以下是關於在簡單注入器中使用[鍵入註冊]的更多信息(https://simpleinjector.readthedocs.org/en/latest/howto.html#resolve-instances-by-key)。 – Steven
@nemesv如果我們一次需要一個實現,例如Shoper類的構造函數具有ICreditCard接口。 MasterCard和VisaCard兩個班級實施ICreditCard。 Shoper一次只需要一個課程。在這種情況下如何使用IOC? – 2017-02-03 10:35:03