在C#4.0中,我们有动态类型,但是如何调用动态类型对象的静态方法?如何在动态类型中调用C#4.0中的静态方法?
下面的代码会在运行时产生异常。对象来自C#类,但它可能是通过DLR从其他语言的对象。重点不在于如何调用静态方法,而是如何调用无法在C#代码中创建的对象的静态方法dynamic。
class Foo
{
public static int Sum(int x, int y)
{
return x + y;
}
}
class Program
{
static void Main(string[] args)
{
dynamic d = new Foo();
Console.WriteLine(d.Sum(1, 3));
}
}
恕我直言,动态的发明填补C#等编程语言。还有一些其他语言(例如Java)允许通过对象而不是类型来调用静态方法。
顺便说一句,与C#3.0相比,C#4.0的引入并不那么令人印象深刻。