C#扩展方法

一般来说,当我们使用某个类时,需要用到一些特别的方法,但却没有时。一般做法可能是创建一个基于该类的派生类,添加我们想要的方法,但这样做无疑增加了复杂度。所以这时候,扩展方法出现了。

扩展方法使你能够直接向现有类型“添加”方法。虽然扩展方法是一种静态方法,但可以像扩展类型上的实例方法一样进行调用。

基础

我这里以string类为例,给string扩展一个方法AppendText(),代码如下

public static string AppendText(this string str, string text)
{
       return str + text;
}

可以看出,扩展方法的特征包括了,使用static修饰;返回类型为待扩展类型;第一个参数格式使用了this,并且类型也必须是待扩展类型。

使用方法直接调用即可。

 var str = "ss";
 str = str.AppendText("sdsd");

//str = "sssdsd"

有一点值得注意的是,扩展方法一般定义在单独的静态扩展类中,不能定义在泛型静态类中。

扩展

扩展方法的特性可以让我们的程序变得更简洁,在Asp.Net Core中,对于类库的引用,类库服务的注册都可以使用扩展方法来保证代码的简洁。

//扩展注册方法
public static IServiceCollection AddService(this IServiceCollection service)
{
    service.AddScoped<IService1, Service1>();
    service.AddScoped<IService2, Service2>();
    service.AddScoped<IService3, Service3>();
    return service;
}

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    //使用扩展方法
    services.AddService();
}
发布时间:2021-05-16
其他阅读

C#中new和override的区别

在C#编程语言中,new 和 override 是两个重要的关键字,它们用于控制类成员方法的行为。在面向对象编程(OOP)中,理解这两个关键字的区别和用法,对于编写清晰、可维护和高效的代码至关重要。

查看原文

Windows的刘海生成器

其实是很早之前在论坛讨论当时苹果率先推出了带刘海的 mac book pro 的时候,就花了几分钟做了一个模拟刘海的软件,可以给 Windows 系统加上刘海。

查看原文

asp.net core实现一个反向代理

本文将向你展示如何在C#和ASP.NET Core中实现一个反向代理功能。

查看原文

自驾环游抚仙湖

抚仙湖作为云南第三大湖,以前只去过北边几个开发比较好的区域,周末闲来无事,准备自驾完整地环湖一圈,从呈贡出发,沿着国道开到澄江,然后环湖一圈,经过江川后再到澄江,吃完饭后回到呈贡。

查看原文

C#桌面应用置顶

Winform和WPF开发中,有时会有需要置顶窗体的需求,本文就介绍怎么使用Win32API进行置顶

查看原文