Как мне получить доступ к статическому методу нестатического объекта, используя только строковое имя объекта?

1

У меня есть класс, содержащий статический метод. Учитывая только имя этого класса как "строку", как я могу получить доступ к статическому методу?

Я знаю, что имя строки - это точно имя класса, и я просто хочу сделать "nameofClass".methodIwantToxecute()

Есть простой способ сделать это?

EDIT: дополнительная информация... Я не могу написать точный класс как код, прежде чем я узнаю имя строки. Я читаю имена объектов класса из файла конфигурации.

  • 4
    Отражение ... в сочетании с деревьями выражений или прямым генерированием IL, если производительность является проблемой.
  • 0
    Вы также знаете название метода, который вам нужно вызвать?
Показать ещё 2 комментария
Теги:

1 ответ

2

Это довольно просто с отражением.

var type = Assembly.GetExecutingAssembly().GetTypes().First(x => x.Name == "yourClass");
    type.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
  • 0
    @erotavlas Удаленный код комментария не будет работать, вы можете использовать это обновленное решение, хотя имя класса потребует добавления пространства имен, я полагаю
  • 0
    хорошо спасибо я понимаю
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню