Getting All Classes Which Inherit a Given Base Class

Hello,

I've been wondering how to get a list of all IClass which inherit from a given IClass?
What I'm trying to do is buidling a lookup list for a new Live Template Macro.

My current implementation looks like this:

[...]

IClass baseType = TypesUtil.GetClassType(TypeFactory.CreateTypeByCLRName(arguments[0], projectFile.GetPsiModule()));
if (baseType == null) {
  return null;
}

IList<ILookupItem> items = new List<ILookupItem>();
PsiLanguageType languageType = MacroUtil.GetLanguageType(context);
IList<IType> types = MacroUtil.GetMacroUtil(context).GetExpectedTypes(context); // <- Tried this, but gives me an empty list :(

foreach (IType type in types) {
  if (TypesUtil.IsClassType(type)) {
    IClass classType = TypesUtil.GetClassType(type);
            
    if ((classType != null) && (classType.IsNestedTypeOf(baseType))) {
      items.Add(new TypeLookupItem(type, MacroUtil.GetLanguageType(context), DefaultElementPointerFactory.Instance));
    }
  }
}

[...]


Thank you in advance.

Please sign in to leave a comment.