最近,我們開始尋找適合NInject的替代品。我們研究了Simple-Injector,AutoFac和StructureMap。但是在我們的測試中,我們無法重現的綁定,這是可能的NIinject,但不是在其他框架。
問題
假設我們有以下接口,常用的低谷多個應用程序:
public interface IRepository {...}
public interface ILog {...}
有一個默認的實現爲IRepository
:
public class DefaultRepository : IRepository {
public DefaultRepository(ILog logger) {...}
}
和兩個實現了ILog
- 一個DefaultLogger
和其他SimpleLogger
。消耗
和兩個班的IRepository
:
public class Crypter {
public Crypter(IRepository repository) {...}
}
public class OtherService {
public OtherService(IRepository repository) {...}
}
我們要實現什麼是以下幾點:
綁定
ILog
到SimpleLogger
當它被注入Crypter
或任何其他類注入它。在示例出的SimpleLogger
將被注入到DefaultRepository
將其注入到Crypter
綁定
ILog
到DefaultLogger
對於所有其他的綁定。在我們的例子中DefaultLogger
將被注入到DefaultRepository
將其注入到OtherService
這是由於Crypter
類(和它使用的任何服務)必須登錄到一個特殊的地方。但是我可以想象出可能適用的類似場景(例如,解決循環依賴)。
的問題(S)
這是爲什麼無法在其他DI框架?如果是(帶有綁定或其他),請舉例說明。
這是不常見的注射情況?
經過一些額外的洞察,我看到這個問題基本上是如何將兩個完全獨立的問題合併爲一個 - 而第二個基本問題則是徵求意見。然而,我沒有看到如何改革問題以符合要求,所以我會保持原樣。可能對某人仍然有用。 – betelgewse