首页 > 代码库 > C# 通过反射类动态调用DLL方法
C# 通过反射类动态调用DLL方法
网上看了很多关于反射的思路和方法,发现这个还算不错
//使用反射方:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { //声明一个反射类对象 Assembly a; //让这个对象加载某个外部dll程序集信息. a = Assembly.LoadFile(@"C:\Users\正月龙\Desktop\Person\Person\bin\Debug\Person.dll"); //反射出该dll程序集的名称信息. Console.WriteLine(a.GetName()); Console.ReadKey(); //定义一个"类型信息"的对象. Type t = a.GetType("Person.Person", false, true); //定义一个成员信息类对象数组,并从程序集中获取. MemberInfo[] info = t.GetMembers(); //逐个返回成员的名字. foreach (MemberInfo inf in info) { Console.WriteLine(inf.Name); } Console.ReadKey(); //定义一个成员方法对象,这里是指定方法名称来获取的. MethodInfo method = t.GetMethod("show"); //定义一个查询构造函数的对象,获取时需给定签名. ConstructorInfo coninfo = t.GetConstructor(new Type[] { typeof(int), typeof(string) }); //这里准备两个参数,封装为一个具有两个对象的数组. object[] arg = new object[2] { 10, "dog" }; //调用构造函数并赋值给一个对象. object o = coninfo.Invoke(arg); //调用对象的方法 method.Invoke(o, null); //这是第二种调用对象的方法.都可以. method.Invoke(o, BindingFlags.Public | BindingFlags.Instance , Type.DefaultBinder, null, null); Console.ReadKey(); } }}
//被查询或被调用方
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Person{ public class Person { private int int_a; private string str_a; public Person() { } public Person(int a,string b) { this.int_a = a; this.str_a = b; } public void show() { Console.WriteLine(int_a.ToString()+":"+str_a); Console.ReadKey(); } }}
C# 通过反射类动态调用DLL方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。