проблема вызова статического метода с использованием отражения и c # - PullRequest
12 голосов
/ 22 сентября 2010

У меня есть два класса:

Item<T> : BusinessBase<T> where T : Item<T>
{
     public static T NewItem()
     {
      //some code here
     }
}
Video : Item <Video>
{

}

Теперь я хочу вызвать метод NewItem () в классе Video, используя отражение. когда я пытаюсь с этим:

MethodInfo inf = typeof(Video).GetMethod("NewItem", BindingFlags.Static);

объект inf после выполнения этой строки по-прежнему равен нулю. можно ли вызвать статический метод NewItem () для класса Video?

1 Ответ

18 голосов
/ 22 сентября 2010

Вам необходимо указать BindingFlags. Public и BindingFlags. FlattenHierarchy в дополнение к BindingFlags. Static :

MethodInfo inf = typeof(Video).GetMethod("NewItem",
    BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy);

Кроме того, вы можете получить метод из объявленного типа без BindingFlags. FlattenHierarchy :

MethodInfo inf = typeof(Item<Video>).GetMethod("NewItem",
    BindingFlags.Static | BindingFlags.Public);

Я пробовал оба пути, и они оба работают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...