在使用.net core時,依賴注入,主要使用通過構造函數注入。小編將通過擴展方式,實現在類中各個地方可以控制反轉,獲取實例。
1、首先自定義擴展類
-
using Microsoft.AspNetCore.Builder;
-
using System;
-
namespace Microsoft.Extensions.DependencyInjection
-
{
-
public static class DI
-
{
-
public static IServiceCollection Services { get; set; }
-
public static IServiceProvider ServiceProvider { get; set; }
-
}
-
public static class Extensions
-
{
-
public static IServiceCollection AddTfDI(this IServiceCollection services)
-
{
-
DI.Services = services;
-
return services;
-
}
-
public static IApplicationBuilder UseTfDI(this IApplicationBuilder builder)
-
{
-
DI.ServiceProvider = builder.ApplicationServices;
-
return builder;
-
}
-
}
-
}
2.在startup.cs中的public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)中添加
app.UseTfDI();//依賴注入擴展方法
3.實例教你如何使用
假設我們在有一個依賴注入:
services.AddSingleton<IUploadHelper, UploadHelper>();
那么我們在其他需要調用的類中,就可以通過
var up = DI.ServiceProvider.GetRequiredService<IUploadHelper>(); //這樣即可以獲得實例
很簡單吧,說明一下,在.net core2中,通過該 方法暫不支持services.AddScoped 注入方式的控制反轉。
更多精彩文章請關注我們的微信公眾號FocusDotCore: