您的位置:首页 > 其它

System.Reflection 反射技术实例.

2007-05-07 18:39 351 查看
项目结构:

ReflectionExample.csproj

-HelloWorld.cs

-Program.cs

源代码:

HelloWorld.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace ReflectionExample
{
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);
}
}
}

Program.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;

namespace ReflectionExample
{
class Program
{
static void Main(string[] args)
{
BindingFlags flags = (BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly);

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(flags);
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);
MethodInfo msayhello = ht.GetMethod("SayHello",flags);
msayhello.Invoke(obj, null);
msayhello.Invoke(objName,null);
System.Console.ReadLine();

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: