簡體   English   中英

子類中的依賴注入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM