using System;
using System.Reflection;
using System.Diagnostics;
public class SecretObject
{ public string PublicProperty { get; set; } private string PrivateProperty { get { return "Secrect"; } } public string PublicField = "Public";
private string PrivateField = "Private";
public static string StaticField = "Static";
public void SayHello(string name)
{ Console.WriteLine("Hello, " + name); }
}
public class CSharpLab
{ public static void Test()
{ SecretObject so = new SecretObject();
so.PublicProperty = "Open";
Analyze(so);
}
public static void Analyze(object obj)
{ Type t = obj.GetType();
Console.WriteLine("Type Name={0}", t.Name); foreach (FieldInfo f in t.GetFields(
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.Static))
Console.WriteLine(
"Field [{0}] = {1}", f.Name, f.GetValue(obj)); foreach (PropertyInfo p in t.GetProperties(
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.Static))
Console.WriteLine("Property [{0}] = {1}", p.Name, p.GetValue(obj, null));
foreach (MethodInfo m in t.GetMethods(
BindingFlags.Public | BindingFlags.Instance ))
{ if (m.Name == "SayHello")
{ Console.WriteLine("Method [SayHello] Found!"); foreach (ParameterInfo a in m.GetParameters())
Console.WriteLine(" - Parameter : " + a.Name); m.Invoke(obj, new object[] { "Jeffrey" }); }
}
}
}