Это наименее ленивый ответ (я просто горжусь этим ответом :)
ReSharper у меня нет, раньше пробовал, но покупать не хотелось. Я пробовал использовать диаграмму классов, но это совсем не практично, потому что диаграмма иерархии охватывает мир в 3 раза, а экран моего ноутбука не имеет бесконечной ширины. Поэтому моим естественным и простым решением было написать код Windows Forms для перебора типов в сборке и использования отражения для добавления узлов в древовидное представление, как показано ниже:
предположим, что у вас есть текстовое поле, древовидное представление и другие вещи, необходимые для формы, в которой выполняется этот код.
var types = typeof(TYPEOFASSEMBLY).Assembly.GetExportedTypes().ToList();
Dictionary<Type, TreeNode> typeTreeDictionary = new Dictionary<Type, TreeNode>();
foreach (var t in types)
{
var tTreeNode = FromType(t);
typeTreeDictionary.Add(t, tTreeNode);
bool foundPlaceAsParent = false;
bool foundPlaceAsChild = false;
foreach (var d in typeTreeDictionary.Keys)
{
if (d.BaseType.Equals(t))
{
foundPlaceAsParent = true;
tTreeNode.Nodes.Add(typeTreeDictionary[d]);
}
else if (t.BaseType.Equals(d))
{
foundPlaceAsChild = true;
typeTreeDictionary[d].Nodes.Add(tTreeNode);
}
}
if (!foundPlaceAsParent && !foundPlaceAsChild)
{
}
}
foreach (var t in typeTreeDictionary.Keys)
{
if (typeTreeDictionary[t].Level == 0)
{
classHierarchyTreeView.Nodes.Add(typeTreeDictionary[t]);
}
}
StringBuilder sb = new StringBuilder();
foreach (TreeNode t in classHierarchyTreeView.Nodes)
{
sb.Append(GetStringRepresentation(t, 0));
}
textBox2.Text = sb.ToString();