Yup, use reflection:
foreach (Type type in assembly.GetTypes()) { foreach (MethodInfo method in type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance)) { Console.WriteLine("{0} {1}{2}.{3}", GetFriendlyAccess(method), method.IsStatic ? "static " : "", type.Name, method.Name); } }
I will leave GetFriendlyAccessName as an exercise for the reader - use IsFamily, IsPrivate, IsPublic, IsProtected, etc. or the Attributes property.
source share