2013-06-28 82 views
0

TL; DR通過使用容器將參數運行時間參數傳遞給構造函數是否被認爲是不良做法?通過IoC容器傳遞參數是一種不好的做法嗎?

作爲示例,我構建了一個WCF解決方案,該解決方案使用ServiceHostFactoryBase實現動態構建服務主機。這家工廠是我的Composition Root;它訪問Unity,設置它並使用容器來解析ServiceHost。但是,此ServiceHost需要訪問數據庫中的某些配置,並使用「constructorString」來標識此配置。

由於Unity是創建我的ServiceHost實例的人,所以我沒有看到通過ParameterOverride傳遞參數的其他解決方案。 但我不喜歡它。該參數不是一個依賴項,它是一個在運行時找到的參數。 此外ServiceHost依賴於還需要「constructorString」的另一個類。所以我會依靠Unity來傳遞這些信息。

我使用Unity 3作爲我的IoC容器。

回答

0

通過使用容器將運行時參數傳遞給 構造函數是否被認爲是不良做法?

是的。規則是使用構造函數和運行時依賴關係使用方法調用注入編譯時依賴項。

'編譯時間依賴性'是一個在編譯時或配置時已知的值(當系統啓動並且使用容器連接依賴項時)。這允許容器爲您建立對象圖。

相關問題