繼我在閱讀這些指南: https://www.devtrends.co.uk/blog/how-not-to-do-dependency-injection-the-static-or-singleton-container依賴注入 - 儘量避免使用服務定位器
我想盡量避免使用服務定位器。 但另一方面,我沒有註冊startup.cs文件中的所有類型。我不認爲這是正確的,所有這些內部類型在主startup.cs
引用我目前有一個工廠類具有建設者類的集合。 每個構建器類都負責創建特定的對象。 我不想提前創建所有這些構建器類,因爲我可能不需要使用它們,創建它們有點繁重。 我看到了一個如何在上面的鏈接中實現這個功能的例子。但是startup.cs類需要知道所有這些構建器。我不認爲這是合適的,我寧願讓工廠階級成爲唯一接觸他們的人。我試圖瞭解是否有某種func/action方法可以從startup.cs文件注入到我的工廠類中。這個功能/操作將負責創建/註冊建設者,然後我可以在班級工廠內激活這個功能/操作。我想要這個func/action來獲得接口/類/可能是構建器的名稱,但使用泛型不起作用。我搜索了很多,並沒有找到任何解決方案,所以我認爲這是不可能的。 似乎我有2個選項: 1.使用服務定位器。這種方式只有工廠類會知道建設者。但是如果將來,如果我想改變DI,我需要「觸摸」工廠類(我污染了工廠類)。希望所有的DI代碼只能位於startup.cs類中。 2.在startup.cs中註冊構建器,但現在startup.cs知道構建器。這有點夫婦的代碼,不是真正的單一角色的責任
這將是很好的注入工廠類從startup.cs func /動作將做註冊,但工廠類本身激活它。 這可能嗎?
在單個類中註冊類型沒有任何問題。如果你想,你可以將它移動到一個配置文件。 – FCin
那麼,我不喜歡配置文件,一般來說,儘量避免它們。在startup.cs中註冊所有類型 - 這看起來不太健康。如果我們想要更改構建器,我們需要「離開」工廠/構建器區域並跳轉到startup.cs並開始刪除/添加註冊。我認爲這是註冊一般組件的好地方,例如Logger/Configuration /等。但不是將我的所有類型加載到一個地方。 – TaLz
您不要每小時更改一次舊的依賴關係,所以我不明白問題是如何去單個文件並更改一行代碼。 – FCin