2014-11-28 2 views
1

У меня есть класс, который содержит статический метод. Учитывая только имя этого класса как «строка», как я могу получить доступ к статическому методу?Как получить доступ к статическому методу нестатического объекта, заданному только строковым именем объекта?

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

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

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

+4

Отражение ... в сочетании с деревьями выражений или прямым генерации IL, если производительность является проблемой. –

+0

Вы также знаете имя метода, который вам нужно позвонить? –

+0

Вы также знаете пространство имен/сборку класса? – Cameron

ответ

2

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

var type = Assembly.GetExecutingAssembly().GetTypes().First(x => x.Name == "yourClass"); 
    type.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null); 
+0

@erotavlas Удаленный код комментария не будет работать, вы можете пойти с этим обновленным решением, хотя для имени класса потребуется добавленное им пространство имен, я полагаю, –

+0

ok спасибо, я понять – erotavlas

+0

Что делать, если я хочу типы не из исполняющей сборки, а из ссылочной сборки? – erotavlas

Смежные вопросы