public static void Main()
Console.WriteLine("Hello World");
public static void GetConstructorsInfo(Type t)
Console.WriteLine("***** ConstructorsInfo *****");
ConstructorInfo[] ci = t.GetConstructors ();
foreach (ConstructorInfo c in ci)
Console.WriteLine(c.ToString () );
public static void GetParametersInfo(Type t)
Console.WriteLine("***** GetParametersInfo *****");
MethodInfo[] mi = t.GetMethods();
foreach (MethodInfo m in mi)
string retVal = m.ReturnType.FullName;
StringBuilder paramInfo = new StringBuilder();
foreach (ParameterInfo pi in m.GetParameters())
paramInfo.Append(string.Format("{0} {1} ", pi.ParameterType, pi.Name));
Console.WriteLine("->{0} {1} {2}", retVal, m.Name, paramInfo);
public static void GetInterfaces(Type t)
Console.WriteLine("***** Interfaces *****");
Type[] ifaces = t.GetInterfaces();
foreach (Type i in ifaces)
Console.WriteLine("->{0}", i.Name);
public static void GetFields(Type t)
Console.WriteLine("***** Fields *****");
FieldInfo[] fi = t.GetFields();
foreach (FieldInfo field in fi)
Console.WriteLine("->{0}", field.Name);
public static void GetProperties(Type t)
Console.WriteLine("***** Properties *****");
PropertyInfo[] pi = t.GetProperties();
foreach (PropertyInfo prop in pi)
Console.WriteLine("->{0}", prop.Name);
public static void GetMethods(Type t)
Console.WriteLine("***** Methods *****");
MethodInfo[] mi = t.GetMethods();
foreach (MethodInfo m in mi)
Console.WriteLine("->{0}", m.Name);
public static void GetMethod(Type t)
Console.WriteLine("***** Method *****");
MethodInfo mi = t.GetMethod("IsMoving");
Console.WriteLine("->{0}", mi.Name);
public static void GetTypeProperties(Type t)
StringBuilder OutputText = new StringBuilder();
OutputText.AppendLine("Analysis of type " + t.Name);
OutputText.AppendLine("Type Name: " + t.Name);
OutputText.AppendLine("Full Name: " + t.FullName);
OutputText.AppendLine("Namespace: " + t.Namespace);
OutputText.AppendLine("Base Type: " + tBase.Name);
Type tUnderlyingSystem = t.UnderlyingSystemType;
if (tUnderlyingSystem != null)
OutputText.AppendLine("UnderlyingSystem Type: " + tUnderlyingSystem.Name);
OutputText.AppendLine("Is Abstract Class: " + t.IsAbstract);
OutputText.AppendLine("Is an Arry: " + t.IsArray);
OutputText.AppendLine("Is a Class: " + t.IsClass);
OutputText.AppendLine("Is a COM Object : " + t.IsCOMObject);
OutputText.AppendLine("\nPUBLIC MEMBERS:");
MemberInfo[] Members = t.GetMembers();
foreach (MemberInfo NextMember in Members)
OutputText.AppendLine(NextMember.DeclaringType + " " +
NextMember.MemberType + " " + NextMember.Name);
Console.WriteLine(OutputText);
internal class SportsCar : Car
public void Accelerate(int accelerateBy)
public Car(string color, int speed)
public double calculateMPG(int startMiles, int endMiles, double gallons)
return (endMiles - startMiles) / gallons;