“扩展就是针对一个已有的类对它增加更多的属性或功能对吗?”不对。(1)只有扩展方法,没有扩展属性(2)扩展方法并不是真的去修改那个类,只是语法糖。比如:
public static class StringExtensions
{
public static string DoSomething(this string s, int index)
{
//do something
//return blablabla..
}
}
//用法
string str = "test";
str.DoSomething(1); //表象
StringExtensions.DoSomething(str, 1); //本质
方法一,static扩展
public static class ExternString
{
public static void SetColor(this string param, int color)
{
Console.WriteLine(string.Format("{0} new color {1}", param, color));
}
}
方法二:
访问者模式,不过这针对自己定义类才可采用。