2012-03-28 5 views
0

Ich habe eine Methode, die ich in einer Versammlung zur Ausgabe alle Klassennamen:

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

Das einzige Problem, das ich zu sehen bin, einige der Klassennamen diese Ausgabe haben:

The.Namespace,_Closure$__1 

Die letzte Nummer wird jedes Mal erhöht, wenn der Typname auf diese Weise ausgegeben werden muss. Kann jemand etwas Licht darüber werfen, was das bedeutet?

+0

Haben Sie versucht, 'type.FullName' stattdessen verwenden? –

Antwort

0

Verschluß ist, wenn eine lokale Variable über ihren Umfang beibehalten wird. Zum Beispiel:

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

des Kompilieren in Schließung führen wird, wo die lastName seinen Wert hinter den Kulissen halten, bis die Where ausgewertet wird.

Für weitere Informationen: http://en.wikipedia.org/wiki/Closure_(computer_science)