2013-08-05 4 views
1

У меня есть строка, содержащая имя типа. Я хочу получить тип в отражении и вызвать статический метод. Я хочу, чтобы код был простым, насколько это возможно. что-то вроде этого:Вызов статической функции с именем типа

public class MyClass {  
      static int foo() 
      { 
      return 7; 
      }; 
} 

var MyClassType = Type.GetType("MyClass"); 
// your help here! 
int res = (MyClassType).foo(); 

Спасибо!

ответ

0

Попробуйте так:

int res = Type.GetType("MyClassType").GetMethod("foo").Invoke(null, null); 
5

Вам необходимо правильно указать обязательные флаги, чтобы сделать эту работу:

// NOTE: Use full name for "MyClass", incuding any namespaces. 
var myClassType = Type.GetType("MyClass"); 
int res = (int)myClassType.GetMethod("foo", BindingFlags.NonPublic | BindingFlags.Static).Invoke(null, null); 
+0

Спасибо! Должен ли я указывать имя метода как строку? Невозможно ли применить его к типу MyClass? – Adibe7

+0

@ Adibe7 Да, при использовании отражения вам нужно указать имя метода как строку. (Вы говорите о «foo» здесь.) Вы имели в виду «имя класса»? Если это действительно класс, вы можете просто: «var myClassType = typeof (MyClass);' –

+0

Я имел в виду foo. благодаря – Adibe7

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