黑马程序员技术交流社区
标题:
反射---从文件中读取程序集中的成员并使用它
[打印本页]
作者:
u010209195
时间:
2014-8-1 11:44
标题:
反射---从文件中读取程序集中的成员并使用它
1:
首先新建一个类库,编译生成dll文件;
namespace Assem
{
public class Asm
{
public int Fun1(int num1, int num2)
{
return num1 + num2;
}
private void Fun()
{
Console.WriteLine("No Params Function");
}
}
}
复制代码
2:
把编译生成的dll文件 Copy到 反射目录下的bin目录下
static void Main(string[] args)
{
/*
* //读取程序集
-> 使用Assembly.LoadFrom(文件名)获得程序集对象
//读取对象
-> 使用GetTypes()获得所有的类型信息(Type对象)
//创建对象
-> Activator.CreateInstance(Type类型的数据)创建指定类型的对象(object)
//获取方法
-> 如果需要调用方法,使用 <type>.GetMethod(方法名)获得MethodInfo类型对象
* //调用方法
-> 调用 方法对象.Invoke(实例, 参数);
*/
//读取程序集
Assembly asm = Assembly.LoadFrom("Assem.dll");
//读取对象
Type t = asm.GetType("Assem.Asm");
//创建对象
object o = Activator.CreateInstance(t);
//获取无参数方法
MethodInfo m = t.GetMethod("Fun", BindingFlags.NonPublic | BindingFlags.Instance);
//调用无参数方法
object res = m.Invoke(o, null);
Console.WriteLine("Fun:"+res);
//获取方法 带参数方法
MethodInfo m1=t.GetMethod("Fun1",new Type[]{typeof(int),typeof(int)});
//调用带参数方法
object res1 = m1.Invoke(o, new object[] { 100, 200 });
Console.WriteLine("Fun1:"+res1);
Console.ReadKey();
}
复制代码
作者:
huangxuanheng
时间:
2014-8-1 13:36
不太看得明白喔
作者:
陈君
时间:
2014-8-3 18:02
总结的不错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2