簡體   English   中英

使用Simple Injector的控制台應用程序中的SetResolver

[英]SetResolver in console application using Simple Injector

我正在尋找等效的方法:

DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));

但是在控制台應用程序中。 在某些情況下,我需要以工作者角色執行此操作。 我不想在整個地方都添加對MVC dll的引用。 我想知道非mvc項目是否有等效項目? 我需要隱藏創建的容器,以便可以在整個應用程序中訪問它。 我曾想創建一個靜態變量,但我不想這樣做。

我看到有用於Simple Injector的CommonSerivceLocator nuget,但奇怪的是它需要2.8.1,而最新的非mvc Simple Injector是2.8.0。

我不想在整個地方都添加對MVC dll的引用。

這表明您不是在應用依賴項注入,而是在進行Service Location ,這是一種反模式

如果將構造函數注入應用於所有組件,則可以讓Simple Injector建立依賴組件(深度很深)的完整對象圖,而無需讓任何組件知道IoC容器(例如Simple)的存在注入器或IoC抽象,例如Common Service Locator和MVC的IDependencyResolver 這樣可以防止您“遍地”引用IoC容器或此類抽象。

因此,在控制台應用程序中,這通常意味着您有一個解析對象圖的地方。 這是應用程序中已經知道IoC容器存在的位置。 此位置通常稱為“ 合成根”

我看到有用於Simple Injector的CommonSerivceLocator nuget,但奇怪的是它需要2.8.1,而最新的非mvc Simple Injector是2.8.0。

我似乎在創建NuGet程序包的構建腳本中出錯,盡管NuGet通常在上載程序包時應用檢查,但由於某種原因,它無法對此進行檢查。 我修復了此問題,並將CommonServiceLocator適配器的v2.8.2推送到了NuGet。 但是請注意,我們在Simple Injector的v3版本中放棄了對CSL適配器的支持,因為這會導致不良做法。 不要使用它; 您不需要它。

暫無
暫無

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

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