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)
{
Console.WriteLine("Hello World");
}
else
{
Console.WriteLine("Hello"+myName);
}
}
}
class Program
{
static void Main(string[] args)
{
Console.Write("列出程序集所有的类型");
Assembly a = Assembly.LoadFrom("R.exe");
Type[] mytypes = a.GetTypes();
foreach (Type t in mytypes)
{
Console.WriteLine(t.Name);
}
Console.ReadLine();
Type ht=typeof(HelloWorld);
//发现方法的特性并提供对方法元数据的访问
MethodInfo[] mif = ht.GetMethods();
foreach (MethodInfo mf in mif)
{
Console.WriteLine(mf.Name);
}
Console.ReadLine();
//使用指定类型的默认构造函数来创建该类型的实例
Object obj = Activator.CreateInstance(ht);
string[] s = { "zhenlei"};
//使用与指定参数匹配程度最高的构造函数来创建指定类型的实例
Object objName = Activator.CreateInstance(ht,s);
MethodInfo mssayhello = ht.GetMethod("SayHello");
//使用指定的参数调用当前的实例所表示的方法或构造函数
mssayhello.Invoke(obj,null);
mssayhello.Invoke(objName,null);
Console.ReadLine();
}
}