Author:think
Date:2021-12-18
环境信息
- Furion版本:2.20.6
- 框架模板:Furion.Template.Api
- 测试项目名称:DITest
实现步骤
项目(解决方案)初始结构如下:
注意的是,上面说的项目和Visual Studio中的项目有点区别。
创建一个新的服务
我们可以仿照模板自带的一个服务目录结构来创建一个新的服务,其中Dto层暂时用不到,因此可以忽略。我们新创建一个SayHello
的服务,目录结构如下图所示:
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();
}
}
}
运行结果
总结
依赖注入是比较高效的对象创建方式,本篇文章旨在介绍利用Furion
框架实现一个简单的依赖注入的例子。学会这个简单的实现方法后,基本上其他的方法就能够更快的入手了,这样我们可以更快的拥抱新技术,提高我们的开发质量与程序效率!