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

Author:think

Date:2021-12-18

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

环境信息

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

实现步骤

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

.NET Core基于Furion框架实现依赖注入_第1张图片

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

创建一个新的服务

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

.NET Core基于Furion框架实现依赖注入_第2张图片

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;
    }
    
  • 最后在方法中即可使用该对象:

    /// 
    /// SayHello测试
    /// 
    /// 
    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;
        }
        /// 
        /// SayHello测试
        /// 
        /// 
        public string getSayHello()
        {
            return _sayHelloService.say();
        }
    }
}

运行结果

.NET Core基于Furion框架实现依赖注入_第3张图片

总结

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

你可能感兴趣的:(软件开发,.netcore,microsoft)