В С# 4.0 у нас есть динамический тип, но как вызвать статический метод объекта динамического типа?
Ниже код генерирует исключение во время выполнения. динамический объект относится к классу С#, но может быть объектом с других языков через DLR. Дело не в том, как вызвать статический метод, а как вызвать статический метод динамического объекта, который не может быть создан в коде С#.
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));
}
}
IMHO, динамический изобретен, чтобы скрестить С# и другой язык программирования. Существует и другой язык (например, Java), который позволяет вызывать статический метод через объект вместо типа.
BTW, введение С# 4.0 не столь впечатляет по сравнению с С# 3.0.