雖然我之前也有過類似的問題,但對整個IoC/DI主題的掌握以及我想要實現的目標都很少,所以在這裏再次.....NET IoC:預先配置庫組件以便於使用
我正在建立一個共同使用我們公司內的圖書館。公共API中最常用的部分已經是IoC友好的,但在較低級別的領域,仍然有一些新的事情正在進行,我想擺脫它(儘管此時更多的是出於正式的原因而不是真正的必要性)。
這本身就很容易做到,但是當然每次使用庫時,所有組件都必須重新連線。由於這幾乎總是看起來一樣,我通常只是將這些默認註冊包裝在一個Autofac模塊中並完成它。
(這裏的問題1:請問這個模塊中的主庫程序走,還是應該是一個獨立的包,即使Autofac很可能是與庫所使用的唯一的IoC容器?)
現在的問題是我目前是公司中唯一真正看到IoC目的的開發人員,或者知道IoC容器的用途,更不用說它是如何使用的,而告訴其他人可以使用它是一個壞主意Autofac軟件包或者使用窮人的DI手動建立一個十幾個對象的圖形。 (我知道那些傢伙 - 他們會把它留在一邊,建立他們自己需要的東西,因爲無論如何,我和我所有的許多小班都瘋了)。
我想解決這個問題的方法是添加一些類似服務定位器可從中爲通常需要的類型(它們看起來與Autofac模塊連接的那些相同)提供預先配置的對象,可能由輕量級IoC容器在內部連接。我知道Service Locator是一個反模式,它創建了哪些類型的問題,我從來不會將它用作對象組合的(我)方法,但作爲IoC/SOLID的「快捷方式」受損,它可行嗎?我還有什麼其他選擇?在這種情況下,將Autofac模塊與庫包含在一起可能更有意義,並且只需將「服務定位器」作爲它的前端?
謝謝你的見解和思考。您在EL中描述的方法似乎與我在「服務定位器」中所考慮的方法相同,因此我目前正計劃採用像TinyIoC這樣的小線路進行佈線工作。 – TeaDrivenDev