ASP.NET Core基础之用扩展方法封装服务配置

阅读本文你的收获

  1. 了解C#中的扩展方法机制
  2. 学会在ASP.NET Core 中,用扩展方法封装服务配置,使得代码更加简洁

一、什么是扩展方法

扩展方法使能够向现有类型添加方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。

扩展方法的特点

扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。

如何定义扩展方法

它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。

例子:将字符串转换为Int

//EString类里有一个ToInt的静态方法,
//他接收一个自身参数this,类型为string,this string必须在方法参数的第一个位置
namespace WebApplication1.Extensions.StringEx
{
    public static class EString
    {
        ///<summary>
        ///将字符串转换为Int
        ///</summary>
        ///<paramname="t"></param>
        ///<returns>当转换失败时返回0</returns>  
        public static int ToInt(this string t)
        {
            int id;
            int.TryParse(t, out id); //这里当转换失败时返回的id为0 
            return id;
        }
    }
}
using WebApplication1.Extensions.StringEx;

//使用ToInt扩展方法
string str="123";
str.ToInt(); //编译时会转换成:EString.ToInt(str);

分析:string类型里面本身没有ToInt方法,通过扩展方法,给string类型扩展了一个ToInt()方法

二、实用案例:在ASP.NET Core当中封装Swagger的配置

开发环境:

操作系统: Windows 10 专业版
平台版本是:.NET 6
开发框架:ASP.NET Core WebApi
开发工具:Visual Studio 2022

首先,在没有用扩展方法封装前,Swagger的配置在Program.cs中如下:
在这里插入图片描述

思考一下:如果所有的服务配置都直接写在Program.cs中,那么势必会使得Program.cs代码变得很长,很乱。这样就会使得后期的维护越来越难。此时,我们可以使用扩展方法,将Swagger的配置封装到一个单独的类中,代码如下:

//在表现层里面,新建以下类,并写一个扩展方法SwaggerSetup
/// <summary>
/// Swagger配置 扩展方法
/// </summary>
public static class SwaggerExtensions
{
	/// <summary>
	/// 扩展方法
	/// </summary>
	/// <param name="services"></param>
	/// <returns></returns>
	public static IServiceCollection SwaggerSetup( this IServiceCollection services) 
	{
		services.AddSwaggerGen(opt =>
		{
			//swagger开发者信息
			opt.SwaggerDoc("v1", new OpenApiInfo
			{
				Title = "XF.OAWeb.WebApi",
				Version = "v1",
				Contact = new OpenApiContact
				{
					Name = "幸福科技",
					Email = "xftech@qq.com",
				}
			});

			//如何在Swagger上显示中文注释呢?
			//解决方法:读取XF.OAWeb.WebApi.xml文件里面的注释信息,显示在Swagger界面上
			string xmlPath = AppDomain.CurrentDomain.BaseDirectory + "XF.OAWeb.WebApi.xml";
			opt.IncludeXmlComments(xmlPath, true);
		});

		return services;
	}
}

//在Program.cs中,把上图中红色框内的代码,改成调用该扩展方法

builder.Services.SwaggerSetup();  //配置Swagger服务

看了本文,你也可以用扩展方法的机制,将各种服务配置单独封装成一个扩展方法,将这些扩展方法放到不同的cs文件中,并放置在一个Extensions文件夹中,方便管理。

如果本文对你有帮助的话,请点赞+评论+关注,或者转发给需要的朋友。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

采石之人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值