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)中,理解这两个关键字的区别和用法,对于编写清晰、可维护和高效的代码至关重要。

查看原文

记录Unity中的坑

Unity虽然使用C#来进行开发,但是Unity所使用的运行时和.net的原生运行时却又差别,这导致在.net中的某些代码块在Unity中运行会出现错误。

查看原文

WPF中CornerRadius是什么属性

在WPF中,CornerRadius 属性我们经常需要使用到,它的作用是用来设置控件的四个圆角,在 BorderButton 等控件中使用。等同于 css 中的 border-radius 设置。

查看原文

Visual Studio 2022激活密钥

Visual Studio 2022 Pro 激活密钥:

查看原文

Fetch发送请求

fetch 是 javascript 中一个新的 api,用于访问和控制 HTTP 的请求和响应等,不再需要使用传统的 XMLHttoRequest

查看原文