我想將簡單的注入器集成到我們的應用程序中,我需要找到一種方法來實現一個IsRegistered方法來查看是否在容器中註冊了一個類型。我怎樣才能實現這個?SimpleInjector IsRegistered方法?
2
A
回答
1
類似IsRegistered
的方法在Simple Injector中沒有實現,因爲你不需要它。這種方法會導致Service Locator anti-pattern,應該不惜一切代價避免。
不必查詢某個類型的存在,即使沒有任何東西需要實現,也要確保始終註冊一個實現。註冊一個空實現(執行Null Object Pattern,不要與null reference混淆)。注入一個Null對象使消耗代碼更容易,並且使測試變得更容易,因爲依賴關係只是必需的,您將失去空檢查並調用IsRegistered
。
但是在某些情況下,您可能會在您的Composition Root(取決於並調用容器的位置)進行某些檢查。即使在這些情況下,使用IsRegistered
將是非常罕見的(我從來沒有看到它的實際用途),儘管有cases查詢容器的註冊是非常有用的。
public static bool IsRegistered(this Container container, Type serviceType)
{
return container.GetRegistration(serviceType) != null;
}
:
儘管如此,該方法可以很容易地通過請求一個登記實現
相關問題
- 1. isRegistered()與isRegisteredOnServer()
- 2. isRegistered not returns true
- 3. GreenRobot:EventBus的isRegistered()方法不按預期方式工作
- 4. 統一DI。泛型類型註冊和IsRegistered方法
- 5. SimpleInjector和FluentValidationFactory
- 6. SimpleInjector RegisterWebApiRequest vs RegisterPerWebRequest
- 7. SimpleInjector RegisterAll for Web Api
- 8. SimpleInjector RegisterAll懶惰地
- 9. 對SimpleInjector的Container.GetInstance()方法的性能影響
- 10. 如何使用SimpleInjector在嵌套方法中獲取DbContext
- 11. SimpleInjector意外行爲
- 12. SimpleInjector和System.Web.Mvc.Async線程
- 13. ASP.NET MVC 5 + Owin + SimpleInjector
- 14. CellInfo api isRegistered()總是返回false
- 15. 使用SimpleInjector消耗WCF
- 16. 使用SimpleInjector獲取HubContext
- 17. 使用的WebAPI,SimpleInjector和MediatR
- 18. 使用simpleinjector註冊opengeneric
- 19. SimpleInjector惰性通用註冊
- 20. SimpleInjector和自定義WebViewPage
- 21. SimpleInjector和Microsoft Webhook ASP.Net Webhooks
- 22. SimpleInjector命名參數註冊
- 23. SimpleInjector - 裝飾者不開火?
- 24. 使用SimpleInjector注入ISession時的生活方式不匹配
- 25. 如何正確使用SimpleInjector - RegisterAllOpenGeneric
- 26. MediatR和SimpleInjector的依賴範圍問題
- 27. SimpleInjector結合WCF和「正規」註冊
- 28. SimpleInjector不工作 - 在OWIN的Web API
- 29. 依賴注入(使用SimpleInjector)和OAuthAuthorizationServerProvider
- 30. RegisterOpenGeneric與SimpleInjector解析不正確類型