反射-后期绑定(Type.InvokeMember()方法)
+展开
-C#
///前面的几篇文章写的是怎样实例化一个未知的类
///那么这篇文章写的就是前几篇文章下面要做的事
///得到实例化对象后,怎样使用类中的方法:
///也就是后期绑定
///
using System;
using System.Reflection;
class program
{
static void Main()
{
//通过AppDomain.CurrentDomain.CreateInstanceAndUnwrap()方法实例化一个未知类
object obj = AppDomain.CurrentDomain.CreateInstanceAndUnwrap("wangjun","wangjun.wangjun");
//从未知类中得到对象实例的类型
Type type = obj.GetType();
//新建参数对象
object[] parameters = new object[2];
//给新建的参数对象赋值
parameters[0] = 7;
parameters[1] = 8;
//调用type.InvokeMember()方法使用未知类的方法Sum() 同时也得到了方法的返回值result
int result = (int)type.InvokeMember(
"Sum", //调用的方法
BindingFlags.InvokeMethod, //使用BindingFlags.InvokeMethod枚举
null, //设为空即可
obj, //调用方法的对象
parameters //调用方法的参数
);
//打印方法的返回值
Console.WriteLine("7 + 8 = {0}",result);
}
}
///那么这篇文章写的就是前几篇文章下面要做的事
///得到实例化对象后,怎样使用类中的方法:
///也就是后期绑定
///
using System;
using System.Reflection;
class program
{
static void Main()
{
//通过AppDomain.CurrentDomain.CreateInstanceAndUnwrap()方法实例化一个未知类
object obj = AppDomain.CurrentDomain.CreateInstanceAndUnwrap("wangjun","wangjun.wangjun");
//从未知类中得到对象实例的类型
Type type = obj.GetType();
//新建参数对象
object[] parameters = new object[2];
//给新建的参数对象赋值
parameters[0] = 7;
parameters[1] = 8;
//调用type.InvokeMember()方法使用未知类的方法Sum() 同时也得到了方法的返回值result
int result = (int)type.InvokeMember(
"Sum", //调用的方法
BindingFlags.InvokeMethod, //使用BindingFlags.InvokeMethod枚举
null, //设为空即可
obj, //调用方法的对象
parameters //调用方法的参数
);
//打印方法的返回值
Console.WriteLine("7 + 8 = {0}",result);
}
}
来源:http://2sws.blog.163.com/blog/static/179102492009843457907/
加支付宝好友偷能量挖...