0
我目前正在嘗試構建一個應用服務器,該應用服務器應承載多個WCF服務。這些服務(當然還有它們的依賴關係)應該由DI/IoC容器實例化(目前是LightCore,但由於我通過CommonServiceLocator使用它,應該很容易交換)。 不幸的是我偶然發現了一個問題。很顯然,我必須創建ServiceHost實例來託管提到的WCF服務。我已經構建了一個自定義的InstanceProvider和ServiceBehavior來處理服務的所有依賴關係,但ServiceHost的構造函數需要服務的服務類型來託管。在我的程序中的這一點上,我只知道接口類型,因爲只有DI容器知道當前正在使用哪個Service實現。WCF構造函數通過DI的服務類型
一個便宜的方法是通過服務定位器創建服務類型的「虛擬」實例,併爲ServiceHost構造函數提供myDummyInstance.GetType()的輸出,但這樣看起來很痛苦,無用的實例化和使用服務定位器而不是DI ...應該有更好的方法。
任何想法的人? :)
嗨。不幸的是,CommonServiceLocator似乎不允許/支持你的第一種方式(或者我誤解了它),這將是完美的解決方案。 第二種方式對我的虛擬實例不會有很大的不同。我沒有一個實例引用,但是它使用了ServiceLocator(也許是不可避免的),也創建了一個虛擬實例,只是沒有引用它:)。 – Pharao2k