C#是否可以向超类添加方法

时间:2017-08-03 04:36:37

标签: c# xamarin.forms

在ruby和其他一些人中,可以为预先存在的祖先类添加一个新方法,并且所有后代都继承它们。我想知道C#中是否也可能。

例如,我想在Xamarin.Forms中为Page类添加一些方法,这些方法会使它们在所有NavigationPages ContentPages和Page的其他后代上自动可用。你能用C#做那种事吗?

1 个答案:

答案 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;
}

thisstatic中的GetDoubleBar static中的FooEx关键字定义了一种扩展方法。

运行时输出84