.NET Core基于Furion框架实现依赖注入

Author:think

Date:2021-12-18

参考文章:12. 依赖注入/控制反转 | Furion (gitee.io)

环境信息

  • Furion版本:2.20.6
  • 框架模板:Furion.Template.Api
  • 测试项目名称:DITest

实现步骤

项目(解决方案)初始结构如下:

image-20211218223203088

注意的是,上面说的项目和Visual Studio中的项目有点区别。

创建一个新的服务

我们可以仿照模板自带的一个服务目录结构来创建一个新的服务,其中Dto层暂时用不到,因此可以忽略。我们新创建一个SayHello的服务,目录结构如下图所示:

image-20211218223837137

ISayHelloService.cs文件

这是一个接口文件,同时也是最开始创建的一个文件。下方的SayHelloService.cs文件需要继承该文件,这一步是依赖注入实现的重要前期准备工作。ISayHelloService.cs文件内容如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DITest.Application.SayHello.Services
{
    public interface ISayHelloService
    {
        string say();
    }
}

SayHelloService.cs文件

这是存放我们程序的业务逻辑的文件,该文件需要继承ISayHelloService接口,并且全部实现接口中存在的方法,同时需要注意的是该文件中的主类还需要继承一个非常重要的接口ITransient,这表明这个是注入的对象生存期为瞬时SayHelloService.cs文件内容如下:

using Furion.DependencyInjection;

namespace DITest.Application.SayHello.Services
{
    public class SayHelloService : ISayHelloService, ITransient
    {
        public string say()
        {
            return "你好,世界!";
        }
    }
}

SayHelloAppService.cs文件

该文件属于控制器Controller层,主要是对外提供WebAPI接口的。在该文件中通过构造方法实现依赖注入

  • 首先声明一个空的接口对象:

    private readonly ISayHelloService _sayHelloService;
    
  • 随后通过构造方法对其进行实例化:

    public SayHelloAppService(ISayHelloService sayHelloService)
    {
        _sayHelloService = sayHelloService;
    }
    
  • 最后在方法中即可使用该对象:

    /// <summary>
    /// SayHello测试
    /// </summary>
    /// <returns></returns>
    public string getSayHello()
    {
        return _sayHelloService.say();
    }
    

SayHelloAppService.cs文件内容如下:

using DITest.Application.SayHello.Services;
using DITest.Web.Core.SayHi;
using Furion.DynamicApiController;

namespace DITest.Application.SayHello
{
    public class SayHelloAppService : IDynamicApiController
    {
        private readonly ISayHelloService _sayHelloService;
        public SayHelloAppService(ISayHelloService sayHelloService)
        {
            _sayHelloService = sayHelloService;
        }
        /// <summary>
        /// SayHello测试
        /// </summary>
        /// <returns></returns>
        public string getSayHello()
        {
            return _sayHelloService.say();
        }
    }
}

运行结果

image-20211218225531226.png

总结

依赖注入是比较高效的对象创建方式,本篇文章旨在介绍利用Furion框架实现一个简单的依赖注入的例子。学会这个简单的实现方法后,基本上其他的方法就能够更快的入手了,这样我们可以更快的拥抱新技术,提高我们的开发质量与程序效率!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

think_mzs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值