一、扩展方法
- 对于已编译成dll的类,有时候会需要进行扩展,但手上有没有源代码,此时可以使用this关键字作为形参,实现扩展方法。
- 扩展方法是静态方法
二、实例
1. 模拟一个类库
该类里面仅有一个方法。
using System;
namespace ClassLibrary
{
public class MyClass
{
public void SayHi()
{
Console.WriteLine("Hi");
}
}
}
2.实现扩展方法
增加一个SayHiAndBye的扩展方法。
public static class Extends
{
//扩展方法
public static void SayHiAndBye(this MyClass myClass)
{
myClass.SayHi();
Console.WriteLine("Bye");
}
}
3. 调用测试
扩展方法和原有方法调用方式一致。
class Program
{
static void Main(string[] args)
{
MyClass myClass = new MyClass();
//调用原有方法
myClass.SayHi();
//调用扩展方法
myClass.SayHiAndBye();
}
}
三、参考链接
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/extension-methods
四、总结
扩展方法在保护已有封装的情况下,不需要拥有源码,不需要继承重写导致的大幅改动,对于加强代码的灵活性非常重要。
版权声明:本文为gehong3641原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。