2.4 神奇的 Inject
2.4.1 Inject
设计
Inject [ɪnˈdʒekt]
意思是 注入,注射
的意思,在这里意为使用最小的侵入式对应用进行机能改造。
Inject()
方法是 Furion
框架提供的最小侵入式的方法,可以让任何 ASP.NET Core
Web 后端项目瞬间支持所有 Furion
框架特性。
2.4.2 Inject
方法有哪些
Inject()
:在Program.cs
中注册AddInject()
:在Startup.cs
的ConfigureServices
中注册AddInjectBase()
:在Startup.cs
的ConfigureServices
中注册AddInjectWithUnifyResult()/ AddInjectWithUnifyResult<T>()
:在Startup.cs
的ConfigureServices
中注册AddInjectMini()
:支持Minimal API
UseInject()
:在Startup.cs
的Configure
中注册UseInjectBase()
:在Startup.cs
的Configure
中注册
2.4.3 在 Program.cs
中使用
2.4.3.1 Inject()
方法
Inject()
是在启动程序 Program.cs
中使用的,集成 Furion
框架唯一方法,如:
using Microsoft.AspNetCore.Hosting;using Microsoft.Extensions.Hosting;namespace Furion.Web.Entry{ public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) { return Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.Inject() .UseStartup<Startup>(); }); } }}
2.4.4 Startup.ConfigureServices
使用
2.4.4.1 AddInject()
方法
AddInject()
方法是在 Startup.cs
的 ConfigureServices
中提供最基础功能的注册。
AddInject()
包含以下基础功能注册:
services.AddSpecificationDocuments([options]) .AddDynamicApiControllers() .AddDataValidation() .AddFriendlyException();
使用如下:
namespace Furion.Web.Entry{ public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddInject(); // 支持直接注册(和下面代码二选一,不能同时注册两次) services.AddControllers() .AddInject(); // 支持链式注册(和上面代码二选一,不能同时注册两次) } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // 其他代码 } }}
2.4.4.2 AddInjectBase()
方法
AddInjectBase()
方法是在 Startup.cs
的 ConfigureServices
中提供最基础功能的注册。
AddInjectBase()
包含以下基础功能注册:
services.AddDataValidation() .AddFriendlyException();
使用同上 AddInject()
。
2.4.4.3 AddInjectMini()
方法
以下内容仅限 Furion 3.7.6 +
版本使用。
支持 .NET6
最新的 Minimal API
模式:
builder.Services.AddInjectMini();
2.4.4.4 AddInjectWithUnifyResult()
方法
AddInjectWithUnifyResult()
方法实际上等同于:
services.AddInject([swaggerGen]) .AddUnifyResult();
使用同上 AddInject()
。
所有 .AddInject****()
方法不能同时注册,只能取其一。
2.4.5 Startup.Configure
使用
2.4.5.1 UseInject()
方法
UseInject()
方法是在 Startup.cs
的 Configure
中提供最基础功能的注册。
UseInject()
包含以下基础功能注册:
app.UseSpecificationDocuments();
使用如下:
namespace Furion.Web.Entry{ public class Startup { public void ConfigureServices(IServiceCollection services) { // 其他代码 } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseInject(); // 包含最小 Swagger 注册 } }}
2.4.5.2 UseInjectBase()
方法
UseInjectBase()
方法是在 Startup.cs
的 Configure
中提供最基础功能的注册。
UseInjectBase()
实际上是个空方法,为了规范化代码特意建立的。
使用同上 UseInject()
。
2.4.6 配置 Inject()
默认注册服务
所有 .Inject
方法都可以传入委托,通过委托可以进一步去配置默认行为。如:
.AddInject(options =>{ options.ConfigureDataValidation(vail => { vail.GlobalEnabled = false; }); // ....});
2.4.7 反馈与建议
给 Furion 提 Issue。