在我们的编程过程中,会使用各种类库,有自己写的,有的用别人的.当我们使用第三方的类库时,有时候为了使用方便,希望给类库增加一些Helper方法,这时候就要使用扩展方法了.
看看MSDN上的介绍:扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。
扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。
通常,建议你只在不得已的情况下才实现扩展方法,并谨慎地实现。 只要有可能,必须扩展现有类型的客户端代码都应该通过创建从现有类型派生的新类型来达到这一目的。
有关详细信息,请参阅继承(C# 编程指南)。
在使用扩展方法来扩展你无法更改其源代码的类型时,你需要承受该类型实现中的更改会导致扩展方法失效的风险。
如果你确实为给定类型实现了扩展方法,请记住以下几点:
如果扩展方法与该类型中定义的方法具有相同的签名,则扩展方法永远不会被调用。
在命名空间级别将扩展方法置于范围中。 例如,如果你在一个名为 Extensions 的命名空间中具有多个包含扩展方法的静态类,则这些扩展方法将全部由 using Extensions; 指令置于范围中。
扩展方法的原则和步骤:
1 方法所在的类必须是静态的
2 方法也必须是静态的
3 方法的第一个参数必须是你要扩展的那个类型,比如你要给int扩展一个方法,那么第一个参数就必须是int。
4 在第一个参数前面还需要有一个this关键字。
第一步:创建一个类库和测试类
namespace TestClibray
{
public class Student
{
public string GetFirstName()
{
return "Daniel";
}
public string GetLastName()
{
return "D";
}
}
}
第二步:创建一个新的类库和帮助类,并编写扩展方法.注意是静态类,和静态方法
namespace Helper
{
public static class ExtensionHelper
{
public static string GetFullName(this TestClibray.Student stu)
{
return stu.GetFirstName() + " ." + stu.GetLastName();
}
}
}
第三部:测试使用这个扩展方法:注意要引用扩展方法所在的类库
using System;
using System.Windows.Forms;
using TestClibray;
using Helper;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Student stu = new Student();
this.textBox1.Text = stu.GetFullName();
}
}
}
结果