参考了 http://www.cnblogs.com/sosoft/p/3506015.html
class Program
{
[STAThread]
static void Main(string[] args)
{
System.Console.WriteLine("列出程序集中的所有类型");
Assembly a = Assembly.LoadFrom("ReflectionExample.exe");
Type[] mytypes = a.GetTypes();
foreach (Type t in mytypes)
{
System.Console.WriteLine(t.Name);
}
System.Console.ReadLine();
System.Console.WriteLine("列出HelloWorld中的所有方法");
Type ht = typeof(HelloWorld);
MethodInfo[] mif = ht.GetMethods();
foreach (MethodInfo mf in mif)
{
System.Console.WriteLine(mf.Name);
}
System.Console.ReadLine();
System.Console.WriteLine("实例化HelloWorld,并调用SayHello方法");
Object obj = Activator.CreateInstance(ht);
string[] s = { "ZhenLei" };
Object objName = Activator.CreateInstance(ht, s);
//BindingFlags flags = (BindingFlags.NonPublic | BindingFlags.Public |
// BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly);
MethodInfo msayhello = ht.GetMethod("SayHello");
msayhello.Invoke(obj, null);
msayhello.Invoke(objName, null);
System.Console.ReadLine();
}
}
class HelloWorld
{
string myName = null;
public HelloWorld(string name)
{
myName = name;
}
public HelloWorld()
: this(null)
{
}
public string Name
{
get
{ return myName; }
}
public void SayHello()
{
if (myName == null)
System.Console.WriteLine("Hello World");
else
System.Console.WriteLine("Hello," + myName);
}
}