namespace ExpandingMethodDemo
{
class Program
{
static void Main(string[] args)
{
Phone ph = new Phone();
//现在调用Phone的无参拓展方法——网上冲浪
ph.surfingTheInternet();
//现在调用Phone的有参拓展方法——发短信查话费
string hf = ph.SendMessage("HFCX");
Console.WriteLine(hf);
Console.Read();
}
}
//定义一个类手机
public class Phone
{
//型号
public string model { get; set; }
//地域
public string area { get; set; }
//系统
public string os { get; set; }
//原始手机有一个计算机的功能,举例用加法计算器
public int calculate(int a,int b)
{
return a + b;
}
//还打电话等等功能
}
//假设Phone已经封装好了不可更改了(模拟C#自带的类库中的类),
//现在我们定义一个Phone使用的工具类,PhoneHelper去做Phone方法的调用和拓展

public static class UsePhoneHelper
{
//常规的调用
public static int getAllCount(int a,int b)
{
return new Phone().calculate(a, b);
}
//假设新出的手机有了上网的功能,此时我不能改原有Phone的封装(模拟的C#自带的类库),怎么让手机拓展这个功能呢
//这里就需要我们使用拓展方法
//前提条件:1、静态类,2、定义静态方法 3、将要拓展的类作为第一个参数
//无参拓展方法:上网

public static void surfingTheInternet(this Phone phone)
{
Console.WriteLine("我在上网看新闻,小说,视频");
}
//有参拓展方法——发短信查话费(发送一个消息给运营商,得到一个剩余话费信息)
public static string SendMessage(this Phone phone,string s)
{
//.....话费的计算
return " 您的当前剩余话费是125";
}
}
}