Отражение .NET: Как вызвать метод с помощью отражения, который возвращает массив объектов? - PullRequest
1 голос
/ 22 декабря 2009

Был быстрый вопрос .. Погуглил, но ничего стоящего не нашел ..

У меня есть простой тип, как показано ниже.

public class DummyClass
{
    public string[] Greetings()
    {
         return new string[] { "Welcome", "Hello" };
    }
}

Как я могу вызвать метод "Привет" через рефлексию? Обратите внимание, что метод возвращает массив строк.

Ответы [ 2 ]

11 голосов
/ 22 декабря 2009

Для вызова такого метода не требуется ничего особенного:

object o = new DummyClass();

MethodInfo method = typeof(DummyClass).GetMethod("Greetings");
string[] a = (string[])method.Invoke(o, null);
2 голосов
/ 22 декабря 2009

Вот код, который вам нужен для вызова метода с использованием отражения (оставьте в ind - возвращаемый тип метода MethodInfo.Invoke - «Object»):

    DummyClass dummy = new DummyClass();

    MethodInfo theMethod = dummy.GetType().GetMethod("Greetings", BindingFlags.Public | BindingFlags.Instance);
    if (theMethod != null)
    {
        string[] ret = (string[])theMethod.Invoke(dummy, null);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...