在ruby和其他一些人中,可以为预先存在的祖先类添加一个新方法,并且所有后代都继承它们。我想知道C#中是否也可能。
例如,我想在Xamarin.Forms中为Page类添加一些方法,这些方法会使它们在所有NavigationPages ContentPages和Page的其他后代上自动可用。你能用C#做那种事吗?
答案 0 :(得分:5)
是的,使用“扩展方法”:
void Main()
{
var foo = new Foo();
Console.WriteLine(foo.GetDoubleBar());
}
public class Foo
{
public int Bar => 42;
}
// Defined somewhere else in your code
public static class FooEx
{
public static int GetDoubleBar(this Foo foo) => foo.Bar * 2;
}
this
类static
中的GetDoubleBar
static
中的FooEx
关键字定义了一种扩展方法。
运行时输出84
。