এটি সর্বনিম্ন অলস উত্তর (আমি এই উত্তরটি নিয়ে কেবল গর্বিত :)
আমার রিশার্পার নেই, আগে চেষ্টা করেছি কিন্তু এটি কিনতে চাইনি। আমি একটি ক্লাস ডায়াগ্রাম চেষ্টা করেছিলাম তবে একেবারেই ব্যবহারিক নয় কারণ হায়ারার্কি ডায়াগ্রামটি সারা বিশ্বের 3 বার ছড়িয়ে পড়ে এবং আমার ল্যাপটপের স্ক্রিনটির অসীম প্রস্থ নেই। সুতরাং আমার প্রাকৃতিক এবং সহজ সমাধানটি হ'ল কিছু উইন্ডোজ ফর্ম কোড লিখতে হবে যাতে কোনও অ্যাসেমব্লির ধরণগুলি সম্পর্কে পুনরাবৃত্তি হয় এবং গাছের দৃশ্যে নোড যুক্ত করতে প্রতিচ্ছবি ব্যবহার করা হয়:
অনুগ্রহ করে ধরে নিন যে এই কোডটি চালিত হয় এমন কোনও ফর্মের জন্য আপনার কাছে একটি পাঠ্য বাক্স, একটি গাছের ভিউ এবং অন্যান্য প্রয়োজনীয় জিনিস রয়েছে
//Go through all the types and either add them to a tree node, or add a tree
//node or more to them depending whether the type is a base or derived class.
//If neither base or derived, just add them to the dictionary so that they be
//checked in the next iterations for being a parent a child or just remain a
//root level node.
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);
//either a parent or a child, never in between
bool foundPlaceAsParent = false;
bool foundPlaceAsChild = false;
foreach (var d in typeTreeDictionary.Keys)
{
if (d.BaseType.Equals(t))
{
//t is parent to d
foundPlaceAsParent = true;
tTreeNode.Nodes.Add(typeTreeDictionary[d]);
//typeTreeDictionary.Remove(d);
}
else if (t.BaseType.Equals(d))
{
//t is child to d
foundPlaceAsChild = true;
typeTreeDictionary[d].Nodes.Add(tTreeNode);
}
}
if (!foundPlaceAsParent && !foundPlaceAsChild)
{
//classHierarchyTreeView.Nodes.Add(tn);
}
}
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();