this
относится к экземпляру, в котором в данный момент выполняется код.
Я думаю, что вы, вероятно, добавляете this.GetType () к методу stati c. И метод stati c не связан с экземпляром, поэтому он не работает.
Type thisType = this.GetType();
MethodInfo theMethod = thisType.GetMethod(TheCommandString);
theMethod.Invoke(this, userParameters);
Работает так:
this.GetType
//or
typeof(ClassName)
Получает тип, который является классом. определение, которое вы можете использовать во время выполнения.
MethodInfo theMethod = thisType.GetMethod(TheCommandString);
пытается получить определение метода из типа. Затем это можно использовать для вызова (вызова)
theMethod.Invoke(this, userParameters);
Вызывает определение метода. Но так как определение метода не знает, к какому экземпляру он принадлежит, вам нужно передать экземпляр, а параметры - sh. (параметры не обязательны)
Примером может быть:
public static void Main()
{
var test = new Test();
Type thisType = test.GetType();
MethodInfo theMethod = thisType.GetMethod("Boop");
theMethod.Invoke(test , new object[0]);
}
public class Test
{
public void Boop()
{
Console.WriteLine("Boop");
}
}
. Код можно посмотреть по адресу:
https://dotnetfiddle.net/67ljft