Я пытаюсь вызвать метод базового класса с помощью отражения, но GetMethods(...)
не находит метод.
Мой базовый класс выглядит так:
public abstract class MyBase<S, T> where S : class, new()
where T : ILocalizableTitle
{
public IEnumerable<T> For(string systemLangCode)
{
// ...
}
public IEnumerable<T> For(Person person)
{
// ...
}
public IEnumerable<T> For(CultureInfo cultureInfo, long tenantId)
{
// ...
}
public static IEnumerable<Type> GetAllMyTypes()
{
var thisType = new StackFrame().GetMethod().DeclaringType;
return (
from t in Assembly.GetExecutingAssembly().GetTypes()
where t.IsClass
&& t.Namespace == thisType?.Namespace
&& t.BaseType?.Name == thisType?.Name
select t).ToList();
}
public void Reset()
{
// ...
}
}
Я получаю производный тип через Reflection ...
var myDerivedType = MyBase<object, ILocalizableTitle>.GetAllMyTypes().FirstOrDefault(t => t.Name == forTypeByName);
С myDerivedType
Я ожидал увидеть метод Reset
, используя следующее:
var publicMethods = myDerivedType.GetMethods(BindingFlags.Public | BindingFlags.FlattenHierarchy)
Но publicMethods
пуст.
Как я могу получить и вызвать метод Reset
, если у меня есть производный тип, т.е. , экземпляр System.Type, представляющий производный тип?