反射
这两天研究了一下反射,将一个简单的反射调用记录一下,以防遗忘
直接上代码了
要被反射的类User:
using System.Collections.Generic;
using System.Text;
namespace FanShe
{
public class User
{
public User(string name)
{
this.Name = name;
}
public User(string name, int age)
{
this.Name = name;
this.Age = age;
}
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
public void Display()
{
Console.WriteLine(string.Format("姓名:{0},年龄:{1}", this.Name, this.Age));
}
public string GetUserInfo(string sex)
{
return string.Format("姓名:{0},年龄:{1},性别:{2}", this.Name, this.Age, sex);
}
}
}
反射调用的代码,注释写的很清楚了
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace FanShe
{
public class Test
{
public void Start()
{
//获取类型信息
Type type = Type.GetType("FanShe.User");
//构造函数的参数
object[] constuctParms = new object[] { "ysuhy",25 };
//创建对象
object obj = Activator.CreateInstance(type, constuctParms);
//调用Display方法
MethodInfo method = type.GetMethod("Display");
BindingFlags flag = BindingFlags.Public | BindingFlags.Instance;//调用方法的一些标志位,这里的含义是Public并且是实例方法,这也是默认的值
//调用方法,用一个object接收返回值
method.Invoke(obj, flag, Type.DefaultBinder, null, null);
//调用GetUserInfo方法
method = type.GetMethod("GetUserInfo");
flag = BindingFlags.Public | BindingFlags.Instance;//调用方法的一些标志位,这里的含义是Public并且是实例方法,这也是默认的值
//调用方法,用一个object接收返回值
object result = method.Invoke(obj, flag, Type.DefaultBinder, new object[] { "男" }, null);
Console.WriteLine("通过反射调用方法GetUserInfo获取到的结果" + result);
}
}
}
执行结果:

浙公网安备 33010602011771号