Проблема в следующей строке:
result = (T2)theMethod?.Invoke(baseClass, p);
Вы пытаетесь вызвать метод базового класса 'type
.Предполагается, что первым аргументом будет объект, для которого вы вызываете метод.Этот метод не существует в Type
, он существует в базовом классе T2
!
Чтобы это работало, сначала необходимо создать экземпляр целевого типа. Предполагая, что тип имеет конструктор по умолчанию , вы можете использовать
var instance = Activator.CreateInstance(baseClass);
Затем вызвать его:
theMethod?.Invoke(instance, p);
Обратите внимание, что я удалил приведение (T2)
.У вас есть экземпляр базового класса.Вы не можете назначить экземпляр базового класса подтипу.Этот акт не действителен.Тем не менее, возможно, вы хотели создать экземпляр T2
вместо базового класса?Если это так, просто измените код выше соответственно:
var instance = Activator.CreateInstance(typeof(T2));