簡體   English   中英

多重依賴注射注射器

[英]Multiple Dependency Inection Tsyringe

我正在嘗試使用 tsyringe 實現級聯。

我有一個單例數據庫類,它必須注入到必須注入到控制器類中的服務類中:

@injectable()
class DashboardDAO implements IDashboardDAO {...}

@injectable()
class DashboardService implements IDashboardService {
    construtor(@inject('DashboardDAO') private dashboardDao: IDashboardDAO){}
}

@injectable()
class DashboardController {
    construtor(@inject('DashboardService') private dashboardService: IDashboardService){}
}

在我的容器中,我有以下配置。

/** REPOSITORIES */
container.registerSingleton<IDashboardDAO>('DashboardDAO', DashboardDAO);

/** SERVICES */
container.registerSingleton<IDashboardService>('DashboardService', DashboardService);

我想用注入的所有內容實例化控制器,如下所示:

const controller = container.resolve(DashboardController);

它無法解決...我收到以下錯誤:

嘗試解決未注冊的依賴項令牌

如果我做下面的代碼工作正常,但我想解決所有注入的控制器。

container.resolve(DashboardService);

有誰知道為什么?

太棒了!

實現接口的服務已正確注冊,但一個小的改進是在注冊時省略模板類型,因為它沒有添加任何內容:

container.registerSingleton('DashboardDAO', DashboardDAO);
container.registerSingleton('DashboardService', DashboardService);

我建議使用符號而不是硬編碼的字符串,但這是次要的。

問題是您將DashboardController類標記為可注入,但沒有告訴tsyringe如何解析該類。 一種方法是將其標記為單例:

@singleton()
class DashboardController {...}

或者:

container.registerSingleton(DashboardController)

然后使用container.resolve(DashboardController)解析應該可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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