zoukankan      html  css  js  c++  java
  • 学习反射例子,调用DLL窗体及方法

    创建类库,并添加新窗体,加入以下方法

    public static string setText(string str)
    {
        return str;
    }

    编译后把生成的DLL文件放入新项目的bin目录,新项目需要using System.Reflection窗口放入2个button,并添加实现

    //通过反射打开Dll窗体
    private void button1_Click(object sender, EventArgs e)
    {
        //dll命名空间名
        string dllName = "DllDemo";
        //dll类名
        string dllClassName = "DllDemo.Form1";
        //载入并创建实例转为Form类型
        Form frm = Assembly.Load(dllName).CreateInstance(dllClassName) as Form;
        frm.ShowDialog();
    }
    //通过反射调用Dll中的方法
    private void button2_Click(object sender, EventArgs e)
    {
        //dll文件路径
        string dllName = "DllDemo";
        //dll类名
        string dllClassName = "DllDemo.Form1";
        //加载dll文件
        var assembly = Assembly.Load(dllName);
        //获取类
        Type type = assembly.GetType(dllClassName);
        //创建该类型的实例
        object obj = Activator.CreateInstance(type);
        //获取该类的方法
        string str = type.InvokeMember("setText", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, new object[] { textBox1.Text }).ToString();
        MessageBox.Show(str);
    
        //缩写
        string returnStr = Assembly.Load(dllName)
                          .GetType(dllClassName)
                          .InvokeMember(
                                        "setText"
                                        , BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static
                                        , null
                                        , null
                                        , new object[] { textBox1.Text }  //传入方法参数
                                        )
                          .ToString();
        MessageBox.Show(returnStr);
    
    }
  • 相关阅读:
    列表基本操作——1
    条件判断与嵌套
    数据拼接与数据转换
    变量与赋值
    打印数与type()函数
    print()函数与打印字符串
    arduino开发ESP8266学习笔记二----按键控制LED灯
    arduino开发ESP8266学习笔记一 ----点亮一个LED灯
    无线充电
    EMC设计总结
  • 原文地址:https://www.cnblogs.com/liessay/p/12876553.html
Copyright © 2011-2022 走看看