我正在使用Ninject WCF擴展項目在我的Web服務上執行依賴注入。如果我將屬性添加到我的Web服務(如IServiceBehavior),那麼在運行時創建它時,如何將依賴關係注入該屬性?Ninject WCF:屬性注入
1
A
回答
2
屬性由.NET運行時創建。因此,他們沒有真正的依賴注入。您應儘可能避免擁有需要依賴關係的屬性。您有以下選項:
- 服務行爲可以添加沒有屬性。但是這需要您以某種方式擴展當前的WCF擴展,以便以與MVC過濾器目前可能的方式類似的方式來定義您想爲某些實例添加服務行爲。這是在這裏完成的:https://github.com/ninject/ninject.extensions.wcf/blob/master/src/Ninject.Extensions.Wcf/ServiceHost/NinjectServiceHost.cs
- 你可以實現一個IInstance提供程序來搜索你的屬性並注入它們。請參閱https://github.com/ninject/ninject.extensions.wcf/blob/master/src/Ninject.Extensions.Wcf/NinjectInstanceProvider.cs
我想嘗試第一個選項。
1
我不同意那些屬性不應該有依賴關係。驗證屬性經常會有不可避免的依賴關係。如果使用正確,屬性是DRY的一個很好的例子。
@wllmsaccnt採取的方法實質上是在2.2中刪除的KernelContainer方法 - 但更糟。現在該屬性被耦合到WCF應用程序。
IMO這正是我不同意KernelContainer的移除的原因。我肯定更喜歡注入服務定位器,但我真的不明白爲什麼服務定位器在您無法更改或控制的系統中工作時不鼓勵。
這肯定比編寫額外的自定義代碼更好 - 對於每個應用程序 - 最可能比ServiceLocator更少維護和測試。
相關問題
- 1. MVin3 Ninject屬性注入
- 2. 不使用屬性的屬性注入[注入]與Ninject
- 3. 用Ninject注入MVC 3中的屬性
- 4. Ninject屬性或構造注入ASP.NET MVC3
- 5. Ninject停止注入我的屬性
- 6. Ninject根本不注入屬性?
- 7. Ninject屬性注入不起作用
- 8. 可選地注入一個屬性Ninject
- 9. Ninject注入的屬性仍然爲空
- 10. 在Ninject中注入IKernel屬性
- 11. Ninject自定義注入屬性
- 12. NInject 3約定N注入屬性未注入
- 13. 注入與Ninject
- 14. Ninject PerRequest注入
- 15. Ninject,使用雙向屬性注入來解決循環依賴
- 16. Ninject屬性注入WebAPI自定義ExceptionFilterAttribute不工作
- 17. 如何使用Ninject注入靜態屬性?
- 18. ninject注入iunitofwork到存儲庫作用域屬性
- 19. 如何使用ninject注入會話對象屬性?
- 20. Ninject循環依賴 - 已經使用屬性注入
- 21. 注入屬性?
- 22. Ninject和惰性依賴注入mvc 4.5
- 23. RoleProvider注入與Ninject
- 24. Ninject。可選注入
- 25. 用Ninject注入'this'
- 26. Wcf依賴注入
- 27. Ninject進入WCF REST服務
- 28. NserviceBus屬性注入
- 29. Autofac惰性屬性注入
- 30. 使用屬性注入而不是構造函數注入
我最終在應用程序啓動時存儲了對我的內核的靜態引用,以便我從屬性的構造函數中解析出我需要的內容。雖然它是IoC反模式的應用程序,但它比其他選項要容易得多。但感謝您的答案。 – wllmsaccnt