アセンブリ内のすべてのプロパティを一覧表示するツリービューを作成したいと思います。次のコードを使用してルートノードを生成できます。
mainAssembly = Assembly.LoadFile(filename); //Global Variable
Type[] objTypes = mainAssembly.GetTypes().OrderBy(o=>o.Name).ToArray();
foreach (var type in objTypes)
{
TreeViewItem item = new TreeViewItem();
item.Header = type.Name;
item.Foreground = Brushes.White;
item.ToolTip = type.FullName;
tvEntities.Items.Add(item);
}
ルートノード[クラス名]をクリックすると、その特定のクラスに含まれるプロパティを一覧表示したいと思います。ただし、別のアセンブリにあるクラス1タイプの集約プロパティが含まれている場合は、IOFileNotFound例外エラーが発生します。
private void ItemExpanded(object sender, RoutedEventArgs e)
{
try
{
TreeViewItem item = e.OriginalSource as TreeViewItem;
if (item.ToolTip != null)
{
Type assemblyType = mainAssembly.GetType(item.ToolTip.ToString());
if (assemblyType != null)
{
foreach (var prop in assemblyType.GetProperties())
{
PropertyInfo property = prop;
TreeViewItem childItem = new TreeViewItem();
childItem.Header = property.Name;
/*Following line gives IOFileNotFound exception, if property is declared in some other assembly.*/
childItem.ToolTip = property.PropertyType.FullName;
item.Items.Add(childItem);
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
これらの参照アセンブリをロードして、ツリーのような構造を表示する方法。