Вызов метода через рефлексию в C#
Динамический вызов медленнее прямого и лишён проверки типов на этапе компиляции. Неверное число аргументов или их тип приведёт к исключению во время выполнения. Если исключение возникнет уже внутри метода, снаружи оно придёт как TargetInvocationException, а исходная ошибка лежит в InnerException.
Такой вызов уместен, когда имя метода приходит из конфигурации или плагина.
Удвоим число через рефлексию. Печатают результат вызова Twice(4):
using System.Reflection;
var obj = new MathBox();
var method = typeof(MathBox).GetMethod("Twice")!;
object? result = method.Invoke(obj, new object[] { 4 });
Console.WriteLine(result);
class MathBox { public int Twice(int x) => x * 2; }
У объекта Gauge есть публичный метод, который прибавляет 3 к переданному числу. Вызовите этот метод динамически для числа 6 и выведите результат.