2012-04-30 43 views
2

我想創建一個樹狀視圖,列出程序集中的所有屬性。我能夠生成使用下面的代碼根節點:如何在結構樹中列出程序集中的所有屬性(包括引用的程序集)?

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); 
} 

在根節點[類別名稱]的點擊,我想列出下來包含在那個特定的類屬性。但是如果它包含類型class1的聚合屬性,它在另一個程序集中,它會給我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; 
    } 
}       

如何加載這些引用的程序集並顯示樹狀結構。

回答

0

確保所有引用的彙編都被複制到應用程序的文件夾中。您遇到異常的原因是CLR找不到其中一個引用的程序集。

相關問題