zoukankan      html  css  js  c++  java
  • C# 动态载入Dll

    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:WorkSpaceVS測试代码反射測试001反射message方法
    eflect
    eflectinDebug
    eflect.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的!



  • 相关阅读:
    攻防世界-web进阶-Web_php_include
    攻防世界-web进阶-php_rce
    Buuctf-misc-穿越时空的思念
    Buuctf-misc-[BJDCTF 2nd]EasyBaBa (kinovea)
    Buuctf-misc-菜刀666
    Buuctf-misc-[BJDCTF 2nd]圣火昭昭-y1ng(outguess)
    Access数据库简介
    VC与VB
    VB的使用
    工作总结2
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4063416.html
Copyright © 2011-2022 走看看