2012-03-28 82 views
0

我有我使用輸出所有的類名在大會的方法:

private static void ListClasses() 
{ 
    var assembly = Assembly.LoadFile(@"path\to\my.dll"); 
    Type[] types = assembly.GetTypes().Where(t => t.IsClass).ToArray(); 

    using (StreamWriter w = File.AppendText("log.txt")) 
    { 
     foreach (var type in types) 
     { 
      w.WriteLine(type.Namespace + "," + type.Name); 
      w.Flush(); 
     } 

     w.Close(); 
    } 

    Console.WriteLine("Done"); 
} 

我看到的唯一問題是一些類名的有這樣的輸出:

The.Namespace,_Closure$__1 

每次需要以這種方式輸出類型名稱時,最後一個數字將遞增。任何人都可以闡明這是什麼意思?

+0

您是否嘗試過使用'type.FullName'來代替? – 2012-03-28 13:50:50

回答

0

的封閉是當一個局部變量被持久超出其範圍。例如:

public IEnumerable<Employee> GetEmployees(string lastName) 
{ 
    return employees.Where(e => e.LastName == lastName); 
} 

編譯這將導致關閉,其中lastName將保持在幕後它的值,直到Where進行評估。

欲瞭解更多信息:http://en.wikipedia.org/wiki/Closure_(computer_science

相關問題