2012-03-28 45 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