Вызвать метод через отражение не удается - PullRequest
1 голос
/ 17 марта 2019

Я пытаюсь вызвать метод, используя отражение, но метод не вызывается. Ниже мой код:

private abstract class A<T>
{
    public abstract void DoSomething(string asd, T obj);
}

private class MyClass : A<int>
{
    public override void DoSomething(string asd, int obj)
    {
        Console.WriteLine(obj);
    }
}

static void Main(string[] args)
{
    Type unboundGenericType = typeof(A<>);
    Type boundGenericType = unboundGenericType.MakeGenericType(typeof(int));
    MethodInfo doSomethingMethod = boundGenericType.GetMethod("DoSomething");
    object instance = Activator.CreateInstance(boundGenericType);
    doSomethingMethod.Invoke(instance, new object[] {"Hello", 123});
}

Я также пытался вызвать обычный метод, но также ошибки :(.

1 Ответ

0 голосов
/ 17 марта 2019

Вы получаете метод с неверным типом. Метод DoSomething был реализован в MyClass, а не для общего типа, который вы связали.

Если вы попробуете следующее, вы получите результат, который вы ищете:

Type myClass = typeof(MyClass);
MethodInfo doSomethingMethod = myClass.GetMethod("DoSomething");
object instance = Activator.CreateInstance(myClass);
doSomethingMethod.Invoke(instance, new object[] { "Hello", 123 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...