学习反射例子,调用DLL窗体及方法
2024-08-24 21:42:25
创建类库,并添加新窗体,加入以下方法
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); }
最新文章
- Atititi.名字 姓名 name 起名naming spec 的构成结构规范v2 qc2.docx
- 打包解决方案后,安装时提示只能在IIS5.1以上运行解决方法
- C语言第4天循环,流程控制。
- Jmeter使用
- js案例_下滑列表
- 在python中如何设置当前工作目录
- JAVA中IO和异常处理练习
- 算法起步之A星算法
- BZOJ_2588_Spoj 10628. Count on a tree_树剖+主席树
- python中线程和进程(一)
- Apache Flink中的广播状态实用指南
- 996.icu,不加班的程序员有前途吗?
- 深入理解CADisplayLink和NSTimer
- jquery模拟form表单提交并新打开页面
- css美化滚动条
- 基于 SOA 概念 RPC 框架 的 消息中心 云部署 设计 漫谈
- sql注入case
- Servlet (HttpServletResponse)对象
- Weblogic读不到Word文件
- 【Unity 3D】碰撞检测