• 技术文章 >后端开发 >C#.Net教程

    C# 动态加载Dll

    黄舟黄舟2017-02-18 10:52:34原创419
    1、新建测试dll及方法,用vs2010新建winform程序,具体代码如下:


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace reflect
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            public string TestReflect()
            {
                MessageBox.Show("动态加载Dll测试");
                return "TestReflect返回值";
            }
        }
    }

    2、动态加载代码


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Reflection;
    
    namespace reflectTest
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void button1_Click(object sender, EventArgs e)
            {
                //加载dll中的函数
                //Assembly asm = Assembly.Load(strDllPath);//加载当前根目录的dll
                Assembly asm = Assembly.LoadFile(@"F:\WorkSpace\VS测试代码\反射测试001\反射message方法\reflect\reflect\bin\Debug\reflect.dll");//根据dll文件实际路径加载
                //用类型的命名空间和类获得类型
                System.Type FromClass = asm.GetType("reflect.Form1");
                //需要实例化类型,才可以使用,参数可以人为的指定,也可以无参数,静态实例可以省略
                Object obj = System.Activator.CreateInstance(FromClass);
                //通过方法名称获得方法(调试走到下面这一步的时候,就可以弹出“动态加载Dll测试”这个消息了)
                MethodInfo method = FromClass.GetMethod("TestReflect");
                //获取TestReflect函数的返回值,在这里会获取到"TestReflect返回值",如果没有返回值,可以省略这一步
                object o = method.Invoke(obj, new object[] { });
            }
        }
    }

    小注:

    通过方法名称获得方法中的方法必须是public的!

    以上就是C# 动态加载Dll的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:C# Timer 定时器应用 下一篇:C# WinForm多线程开发(三) Control.Invoke
    PHP编程就业班

    相关文章推荐

    • 分享一道逻辑面试题,看看你能答对吗!• c语言中形参的缺省存储类别是什么• C++设计模式浅识装饰模式• SUNWEN教程之----C#进阶(五)• asp.net 图片验证码的HtmlHelper

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网