Подтвердить что ты не робот

Вызов вызова статического метода с использованием отражения и С#

i имеют два класса:

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?

4b9b3361

Ответ 1

Вам нужно указать BindingFlags. Public и BindingFlags. FlattenHierarchy в дополнение к BindingFlags. Статический:

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);

Я пробовал в обоих направлениях, и они оба работают.