我們正在使用Autofac 4進行DI,並且我不久前開始嘗試使用AI。現在我創建了一個IdentityTelemetryInitializer類,它需要和IIdentityProvider能夠獲得當前授權用戶的ID並將其添加到上下文中。我無法找到將依賴注入到TelemetryInitializer的方法。如果我定義了一個採用IIdentityProvider的構造器,則自定義初始化器將被完全跳過。 歡迎任何想法。我正在考慮將用戶標識設置爲線程負責人,以便我們可以通過這種方式訪問它,但是我希望可以使用DI來做到這一點?如何在自定義TelemetryInitializer中注入依賴項?
回答
您不能使用構造函數作爲使用默認(空)構造函數在內部初始化的初始化程序注入依賴項。當你明確地定義了一個新的ctor時,你實際上已經「刪除」了默認的ctor,因此初始化器完全被跳過了,就像你剛纔提到的那樣。
因此,唯一的方法是在應用程序啓動時註冊它們之後,在'Initialize'方法期間解決依賴關係。
ctx.RegisterType<MyService>().As<IService>().AsSelf(); // on application startup
ctx.Resolve<IService>(); // during initializer 'Initialize' method
感謝您的回答。我試過了,但是,依賴關係是通過.InstancePerRequest()在Autofac中註冊的。遙測初始化程序類看起來生活在一個不同的(更長的生命週期)範圍內,並且無法訪問每個請求的依賴關係:-( –
@ParaJaco不能使用HttpContext從Autofac文檔解析依賴關係?[我如何使用每個請求生存期範圍?](http://docs.autofac.org/en/latest/faq/per-request-scope.html):「如果您在ASP中有應用程序啓動代碼或後臺線程。嘗試使用DependencyResolver.Current的NET MVC應用程序 - AutofacDependencyResolver需要Web上下文來解決問題,當您嘗試從解析器解析某些內容時,它將嘗試啓動每個請求生存期範圍並將其與當前HttpContext「 – yonisha
我不知道如何做到這一點,你會有一個如何做到這一點的例子嗎? –
- 1. 自定義ViewResolver和依賴項注入
- 2. 如何在組件的類定義中注入依賴項?
- 3. 自定義ResourceProviderFactory依賴注入
- 4. PropertyGrid自定義Itemsource和依賴注入
- 5. 如何將依賴關係注入到ELMAH自定義ErrorLog中?
- 6. 如何使用Windsor將依賴注入到自定義RoleProvider中?
- 7. 如果定義了注入依賴性?
- 8. 自定義Razor查看基類和依賴項注入
- 9. IoC依賴注入到自定義HTTP模塊 - 如何? (ASP.NET)
- 10. 如何在WCF中將依賴關係注入到自定義的UserNamePasswordValidator中?
- 11. 如何注入WebRequest/Response依賴項?
- 12. 如何向JerseyTest注入依賴項?
- 13. 如何在模塊定義時注入AngularJS模塊依賴項,而無需在依賴數組中聲明它?
- 14. 在依賴注入中移動語義
- 15. 向pom.xml添加自定義jar(依賴項)依賴項
- 16. 如何處理抽象第三方依賴項(依賴注入)?
- 17. 多項目依賴注入
- 18. 依賴項注入Grails Webflow
- 19. Ninject注入ILog依賴項
- 20. C#依賴注入 - 如何注入無源的依賴關係?
- 21. (自動)依賴注入綁定機制
- 22. 在依賴注入中dynamiclly初始化依賴項對象?
- 23. JavaFX2中的Fxml和Spring - 如何定義依賴注入
- 24. 如何注入d3依賴?
- 25. MVC 6自定義模型綁定使用依賴注入
- 26. SCSF定製依賴注入
- 27. GWT自定義庫依賴項問題
- 28. 如何在決定使用哪個依賴項時注入依賴關係需要使用依賴關係
- 29. 依賴注入
- 30. 依賴注入
你說的「自定義初始化程序完全被忽略了」是什麼?你的意思是說,基地ctor不叫? –