В C # 4.0 у нас есть динамический тип, но как вызвать статический метод объекта динамического типа?
Код ниже будет генерировать исключение во время выполнения. динамический объект относится к классу C #, но это может быть объект из других языков через DLR. Дело не в том, как вызвать статический метод, а в том, как вызвать статический метод объекта dynamic , который не может быть создан в коде C #.
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 # 4.0 не так впечатляет по сравнению с C # 3.0.