在使用.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: