У меня есть иерархия наследования:
public interface IValidator<TItem>
public abstract class Validator<TItem, TId> : IValidator<IItem>
public class MyValidator : Validator<MyItem, int>
Я хочу найти каждый интерфейс и суперкласс MyValidator
. Я могу сделать интерфейсы легко с
return validator.GetType().GetInterfaces();
Но когда я пытаюсь сделать то же самое для суперклассов, все, что я получаю, это System.Object
, а не Validator<MyItem, int>
.
var type = validator.GetType();
return AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(a => a.GetTypes())
.Where(supertype => type.IsSubclassOf(supertype));
Как получить полную иерархию наследования?