如何在非AspNetCore项目中使用依赖注入

软件是由组件递归组合而成的

add42bb8f40192e8e3a5a8d8d3ea6d72.jpeg

@图片故事:这个植物是紫菀,2022年9月10日中秋节,在北京老龙窝徒步,途中遭遇马蜂袭击,狼狈不堪,幸得队友碾碎紫菀叶,敷在伤口上,以缓解疼痛。 @摄影师:刘先生

01

有小伙伴儿问:在AspNetCore项目中写的组件,都是基于依赖注入的,这些组件如何在非AspNetCore项目中复用呢?

要回答这个问题,首先要清楚AspNetCore中的依赖注入,是如何实现的?

默认情况下AspNetCore的依赖注入是由Microsoft.Extensions.DependencyInjection程序集实现的。

在AspNetCore项目中,通过Startup类的ConfigureServices(IServiceCollection services)方法,对服务类进行注册。

通过ServiceProvider类的GetService()方法,从依赖注入容器中,获取服务类的实例。

所以,不管是控制台项目,单元测试项目,还是客户端项目,按照这个逻辑,都可以使用依赖注入。

02

在非AspNetCore项目中使用依赖注入,共3步:

第一步:通过nuget包管理器引入程序集:Microsoft.Extensions.DependencyInjection

第二步:仿照Startup中的ConfigureServices方法,注册所需服务类。

基础代码如下:

/// <summary>
/// 注册服务类
/// </summary>
/// <returns></returns>
public static ServiceCollection ConfigureServices()
{
    ServiceCollection services = new ServiceCollection();
    //与AspNetCore中Startup一样,注册服务类即可
    services.AddScoped<ICostService, CostService>();
    
    return services;
}

第三步:构建ServiceProvider,获取服务实例

基础代码如下:

/// <summary>
/// 使用服务类
/// </summary>
/// <returns></returns>
public static void Work(ServiceCollection services)
{
    //创建ServiceProvider
    using(var serviceProvider = services.BuildServiceProvider())
    {
        //获取服务实例
        var costService = serviceProvider.GetService<ICostService>();
        //完成业务操作costService.Do();
    }
}

简单3步,可以实现在任意类型项目中使用依赖注入。

喜欢内容的朋友可以点赞,转发,关注

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值