通过反射获取程序集中的方法并执行

转自http://www.luofenming.com/show.aspx?id=ART2018030100001

以下DLL文件里面的内容生成的程序集名为ClassLibrary1.dll


namespace ClassLibrary1 {
    public class Class2
    {
        public string Show_Str(string str)
        {
            if (string.IsNullOrEmpty(str))
                return "你没有传参数进来";
            else
                return "有参数,参数是:" + str;
        }
    } }

以下是反射调用DLL里面方法 注意:把ClassLibrary1.dll考到调用的根目录下 private void
button2_Click(object sender, EventArgs e) {
//加载程序集(dll文件地址),使用Assembly类
Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory +
“ClassLibrary1.dll”);

//获取类型,参数(名称空间+类)   
Type type = assembly.GetType("ClassLibrary1.Class2");
//创建该对象的实例,object类型,参数(名称空间+类)   
object instance = assembly.CreateInstance("ClassLibrary1.Class2");

//设置ClassLibrary1.dll中Show_Str方法中的参数类型,Type[]类型;如有多个参数可以追加多个   
Type[] params_type = new Type[1];
params_type[0] = Type.GetType("System.String");//System.Int32是整型
//设置ClassLibrary1.dll中Show_Str方法中的参数值;如有多个参数可以追加多个   
Object[] params_obj = new Object[1];
params_obj[0] = "lqwvje-Dll里面方法参数";

//执行Show_Str方法   params_type方法的参数类型   instance对象实例 params_obj参数值
object value = type.GetMethod("Show_Str", params_type).Invoke(instance, params_obj); }

以下部分为我自己写的:

  //程序集需要放在启动项目根目录下,通过名字加载程序集
            Assembly a = Assembly.LoadFrom("TestDLL.DLL");

            //用类的全名在程序集中获取类
            //类的全名:命名空间.类名(这里命名空间就是程序集名)
            Type t = a.GetType("TestDLL.TestCS");

            //创建类的实例对象
            object obj = a.CreateInstance("TestDLL.TestCS");

            //获取类中名为Test方法的信息
            MethodInfo methodInfo= t.GetMethod("Test");

            //创建一个object数组传递参数给要调用的方法
            object[] param = new object[2];
            param[0] = 3.3f;
            param[1] = 8.6f;

            object res= methodInfo.Invoke(obj, param);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值