扩展方法ExtendMethod:
定义:在静态类,定义静态方法,就是扩展方法。
使用场合:1,调用密封类中的对象,属性或方法(扩展密封类); 2、扩展接口
新建一个Person类,假如是是密封的,是不能继承的,也无法new()
/// <summary>
/// 假如这个类是别人那里拿过来的,不是自己写的; 假如这个类是密封的,是不能继承的,
/// </summary>
public sealed class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Phone { get; set; }
public string GetPhone()
{
return Phone;
}
}
此时可以写个扩展类PersonExt
/// <summary>
/// 扩展方法的编写【这种方法使用的是比较多的】
/// 定义一个静态类, 再写一个静态方法 再加上this 再加上一个Person类型,再加上Person类型的对象。
/// </summary>
public static class PersonExt
{
public static void ShowPhone(this Person person)
{
Console.WriteLine(person.Age);
Console.WriteLine(person.Name);
Console.WriteLine(person.GetPhone()); //有个向下的小箭头表示是扩展方法。
}
}
在Main函数中添加以下代码
static void Main(string[] args)
{
//扩展方法的调用
Person p = new Person()
{
Age = 20,
Name = "caiqing",
Phone = "手机 13146076505"
};
PersonExt.ShowPhone(p);
}
首先创建一个接口类并添加没有函数体的方法
public interface InterfaceCalculateMethod
{
int Add(int a, int b);
}
public class Acall : InterfaceCalculateMethod
{
public int Add(int a, int b)
{
return a + b ;
}
}
public class Bcall : InterfaceCalculateMethod
{
public int Add(int a, int b)
{
return a + b;
}
}
创建一个接口扩展类InterfaceExtend.cs
/// <summary>
/// 接口扩展,
/// 如果是是继承接口方法则里面的函数接口都要实现,有多少个都要实现不是很灵活。
/// </summary>
public static class InterfaceExtend
{
public static int Sub(this InterfaceCalculateMethod cal, int a, int b)
{
return a - b;
}
public static int Cheng(this InterfaceCalculateMethod cal, int a, int b)
{
return a * b;
}
public static int Div(this InterfaceCalculateMethod cal, int a, int b)
{
return a / b;
}
}
在Main函数中添加代码
static void Main(string[] args)
{
//扩展方法的调用
Person p = new Person()
{
Age = 20,
Name = "caiqing",
Phone = "手机 13146076505"
};
PersonExt.ShowPhone(p);
//扩展接口的调用
Bcall bc = new Bcall();
Console.WriteLine(bc.Cheng(2, 3));
}