class Program { static void Main(string[] args) { Assembly assem = Assembly.GetExecutingAssembly(); Reflector.ReflectOnAssembly(assem); Console.Read(); } } public class Reflector { public static void ReflectOnAssembly(Assembly assem) { WriteLine(0,"Assembly:{0}",assem); foreach (Module m in assem.GetModules()) { WriteLine(1, "Module:{0}", m); foreach (Type t in m.GetTypes()) { WriteLine(2, "Type:{0}", t); foreach (MemberInfo mi in t.GetMembers()) { WriteLine(3, "{0}: {1}", mi.MemberType,mi); } } } } private static void WriteLine(Int32 indent, string format, params object[] args) { Console.WriteLine(new string(' ',3*indent)+format,args); } } class SomeType { public class InnerType { } public Int32 SomeField = 1; private static string goo = null; private SomeType() { } private TimeSpan SomeProperty { get { return new TimeSpan(); } set { } } public static event System.Threading.ThreadStart someEent; public void NoCompilerWarnings() { someEent.ToString(); goo.ToString(); } }