public static void Main(string[] args)
Console.WriteLine("***** Welcome to MyTypeViewer *****");
Console.WriteLine("\nEnter a type name to evaluate");
Console.Write("or enter Q to quit: ");
typeName = Console.ReadLine();
if (typeName.ToUpper() == "Q")
Type t = Type.GetType(typeName);
Console.WriteLine("Sorry, can't find type");
static void ListMethods(Type t)
Console.WriteLine("***** Methods *****");
MethodInfo[] mi = t.GetMethods();
foreach(MethodInfo m in mi)
Console.WriteLine("->{0}", m.Name);
static void ListFields(Type t)
Console.WriteLine("***** Fields *****");
var fieldNames = from f in t.GetFields() select f.Name;
foreach (var name in fieldNames)
Console.WriteLine("->{0}", name);
static void ListProps(Type t)
Console.WriteLine("***** Properties *****");
var propNames = from p in t.GetProperties() select p.Name;
foreach (var name in propNames)
Console.WriteLine("->{0}", name);
static void ListInterfaces(Type t)
Console.WriteLine("***** Interfaces *****");
var ifaces = from i in t.GetInterfaces() select i;
foreach(Type i in ifaces)
Console.WriteLine("->{0}", i.Name);
static void ListVariousStats(Type t)
Console.WriteLine("***** Various Statistics *****");
Console.WriteLine("Base class is: {0}", t.BaseType);
Console.WriteLine("Is type abstract? {0}", t.IsAbstract);
Console.WriteLine("Is type sealed? {0}", t.IsSealed);
Console.WriteLine("Is type generic? {0}", t.IsGenericTypeDefinition);
Console.WriteLine("Is type a class type? {0}", t.IsClass);