2012-03-28 20 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'を使用してみましたか? –

答えて

0

クロージャです。例:これはWhereが評価されるまでlastNameは舞台裏で、その値を維持するクロージャ、になりますコンパイル

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

詳細についてはhttp://en.wikipedia.org/wiki/Closure_(computer_science

関連する問題