C#反射技术的相关使用方法

本文介绍如何使用反射在C#中实例化类并调用其方法,包括从同一程序集及不同程序集中加载类型,使用无参及带参构造函数创建实例,并通过反射调用对象的方法。

1.获取同一程序集的类型实例

无参数构造函数

Type t=Type.GetType("AppCode.Employee");

object emp=t.Assembly.CreateInstance("AppCode.Emloyee");

有参数的构造函数

       //构造函数参数列表如下

       //public Employe(string userid, string username, int age)

Type t=Type.GetType("AppCode.Employee");

//生成参数类型数组

Type[] ts=new Type[3]{ typeof(System.String),typeof(System.String),typeof(System.Int16)};

//获得构造函数

ConstructorInfo mi=t.GetConstructor(ts);

//生成参数值数组

object[] ps=new object[3];

  ps[0] = "420106780911326";

  ps[1] = "wesker";

  ps[2] = 36;

  object emp=mi.Invoke(ps);

 2.获得不同程序集内的类型的实例。

无参数构造函数

Type t = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "\\compenent1.dll").GetType("compenent1.User");

object user = t.Assembly.CreateInstance("compenent1.User");

有参数的构造函数

 Type t = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "\\compenent1.dll").GetType("compenent1.User");

   Type[] ts = new Type[3] { typeof(System.String), typeof(System.String), typeof(System.Int16) };

   ConstructorInfo mi = t.GetConstructor(ts);

 object[] ps = new object[3];

  ps[0] = "420106780911326";

  ps[1] = "wesker";

  ps[2] = 36;

  object user = mi.Invoke(ps);

3.使用反射调用方法

Type t = Type.GetType("AppCode.Employe");

  object emp = t.Assembly.CreateInstance("AppCode.Employe");

 MethodInfo mi = t.GetMethod("ToString");

  string context = mi.Invoke(emp,null).ToString();

 

 4.获得类的信息

  通过Type.GetMethods方法获得方法的信息。

  通过Type.GetConstructors获得构造函数。

  5.使用Activator类实例化类型

转载于:https://www.cnblogs.com/ywei221/p/3163491.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值