Метод Invoke
Аргументы передают массивом
object[]. Если метод
бросает исключение,
Invoke оборачивает его
в TargetInvocationException.
Синтаксис
object result = method.Invoke(target, args);
Пример
Давайте вызвать метод с
аргументом 12345:
using System;
using System.Reflection;
class Gate
{
public int Run(int value)
{
return value;
}
}
class Program
{
static void Main()
{
Gate gate = new Gate();
MethodInfo method = typeof(Gate).GetMethod("Run");
int res = (int)method.Invoke(gate, new object[] { 12345 });
Console.WriteLine(res);
}
}
Результат выполнения кода:
12345
Пример
Давайте вызвать метод без аргументов:
using System;
using System.Reflection;
class Gate
{
public int Pick()
{
return 12345;
}
}
class Program
{
static void Main()
{
Gate gate = new Gate();
MethodInfo method = typeof(Gate).GetMethod("Pick");
int res = (int)method.Invoke(gate, null);
Console.WriteLine(res);
}
}
Результат выполнения кода:
12345
Пример
Давайте поймать обёртку над
InvalidOperationException:
using System;
using System.Reflection;
class Gate
{
public void Fail()
{
throw new InvalidOperationException();
}
}
class Program
{
static void Main()
{
Gate gate = new Gate();
MethodInfo method = typeof(Gate).GetMethod("Fail");
try
{
method.Invoke(gate, null);
}
catch (TargetInvocationException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Смотрите также
-
ConstructorInfo.Invoke,
создание объекта -
ReturnType,
тип результата -
GetValue,
чтение свойства -
MethodInfo,
обзор