C# 动态加载Dll文件 带参数构造 传参

直接上代码

//创建对象实例
Info info = new Info();
Button btn = (Button)sender;
info.Text = btn.Text;
info.Author = "vey";
info.icon = Icon;

//加载dll
localPath = Directory.GetCurrentDirectory();
dllPath = localPath + @"\TestDll.dll";
Assembly assem = Assembly.LoadFile(dllPath);
//获取所有的类型名,然后遍历,通过类型名字来区别了
Type[] tys = assem.GetTypes();
foreach (Type ty in tys)
{
    if (ty.Name == "TestForm3") //Class名称
    {
        //获取不带参数的构造函数
        //ConstructorInfo magicConstructor = ty.GetConstructor(Type.EmptyTypes);
        //获取实例,不带参(上述构造时不带参)
        //object magicClassObject = magicConstructor.Invoke(new object[] { });

        //获取带参数的构造函数
        ConstructorInfo magicConstructor = ty.GetConstructor(new Type[] { typeof(Info) });
        //获取实例,带参(上述构造时有多少个参数就填写多少个)
        object magicClassObject = magicConstructor.Invoke(new object[] { info });

        //根据方法名获取方法
        MethodInfo mi = ty.GetMethod("getForm");

        //获取不带参方法执行结果
        var obj = mi.Invoke(magicClassObject, null);
        //获取带参方法执行结果.方法里面需要多少个参数,就写多少个 例如 :new object[] { "222", 000 }
        //var obj = mi.Invoke(magicClassObject, new object[] { "222", 000 });

        //根据返回结果转换类型
        Form frm = (Form)obj;

        frm.Icon = this.Icon;
        frm.ShowDialog();
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值