第33章 抽离AddSwaggerGen依赖注入中间件
以下是一个简化的代码实例,展示了如何抽离AddSwaggerGen
依赖注入中间件的核心函数。
using Microsoft.Extensions.DependencyInjection;
using Microsoft.OpenApi.Models;
using System;
namespace MyApplication.Extensions
{
public static class SwaggerGenExtensions
{
public static IServiceCollection AddSwaggerGen(this IServiceCollection services, Action<SwaggerGenOptions> setupAction)
{
// 确保services不为null
if (services == null)
{
throw new ArgumentNullException(nameof(services));
}
// 确保setupAction不为null
if (setupAction == null)
{
throw new ArgumentNullException(nameof(setupAction));
}
// 添加SwaggerGen的配置选项
services.Configure(setupAction);
// 添加Swagger生成器
services.AddSwaggerGen(c =>
{
// 根据配置选项设置Swagger文档
c.SwaggerDoc("v1", new OpenApiInfo
{
Title = "My API",
Version = "v1",
Description = "An example ASP.NET Core Web API",
Contact = new OpenApiContact() { Name = "Developer", Email = "developer@example.com", Url = new Uri("https://developer.example.com/") }
});
});
return services;
}
}
}
这个代码实例展示了如何定义一个扩展方法AddSwaggerGen
,它接受一个IServiceCollection
和一个Action<SwaggerGenOptions>
作为参数,允许调用者配置Swagger生成器的选项。这是一个简化的版本,专注于展示抽象和配置选项的概念。
评论已关闭