[英]Dependency Injection in child class
我正在 .Net 核心中編寫一個控制台應用程序。 我想使用依賴注入。 我的架構是這樣的。 程序包含一個 TradeProcessor(它完成所有的工作),它依次生成一些 CompoundTrades。 我已經讓 DI 通過其構造函數和整個 ServiceProvider 設置將一些類傳遞到 TradeProcessor。 這很好用。
現在,如果我想將一些類 DI 到 CompoundTrade 中,TradeProcessor 是否必須通過構造函數傳入它們? 我的印象是,如果您注冊要構建的類,那么您想傳入的所有類,那么它們都將“在后台”傳入。 您調用 CompoundTrade () 但另一個構造函數被調用。 我是否將其與 Asp.Net 中的 DI 混淆了? 這樣做的最佳設計模式是什么? 把所有的 ServiceProvider 都放在一個靜態類中?
您調用 CompoundTrade() 但另一個構造函數被調用。
這不是依賴注入的工作方式。 如果您顯式調用構造函數,你正是這樣的構造。
您將需要引用您的容器並告訴您的容器為您創建該類的實例。
如果您有一個實例需要動態創建在容器中注冊的新對象,則需要傳入容器,然后使用它來創建這些新對象。 不要直接調用構造函數。
public TradeProcessor(IServiceProvider provider)
{
// save the provider in a field
}
public void ThisNeedsADynamicallyCreatedContainerObject()
{
if(condition)
{
var instance = this.provider.GetService<ICompoundTrade>();
}
else
{
var instance = this.provider.GetService<ISingleTrade>();
}
}
免責聲明:實際語法可能因您使用的依賴注入提供程序而異。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.