2016-10-07 53 views
0

我在我的應用程序下面的代碼片段:檢索在MVC核心淨依賴注入已註冊的服務實例

services.AddScoped<IMyInterface, MyService>(); 
services.AddSingleton<IYourInterface, YourService>(); 

由於一些環境初始化過程中,我必須能夠獲得Startup類中的IYourInterface的單例實例調用該服務以從遠程服務器讀取幾個配置條目並填充它們。考慮到我使用.Net Core的內置DI框架,我該如何實現這一目標?

回答

2

這樣做是爲了創造這種情況下手動前面如下的方式:

var service = new YourService(); 

services.AddScoped<IMyInterface, MyService>(); 
services.AddSingleton<YourService>(service); 

正如它是明智的,分開使用註冊程序(如Microsoft.Extensions.DependencyInjection庫正確力) ,這種分離在加載/構建配置和進行容器註冊之間很重要。註冊解析寄存器不受MS DI,Autofac和Simple Injector等庫的支持,因爲它會導致很多複雜性和subtle bugs