踩到一个Emit的坑,留个纪念
2024-09-10 00:20:34
重现代码:
var dmFoo = new DynamicMethod("Foo", typeof(void), Type.EmptyTypes);
var ilFoo = dmFoo.GetILGenerator();
//...
var label = ilFoo.DefineLabel();
//...
var dmBar = new DynamicMethod("Bar", typeof(void), Type.EmptyTypes);
var ilBar = dmBar.GetILGenerator();
//...
ilBar.MarkLabel(label);
报错信息为:
...NullReferenceException...
at System.Reflection.Emit.ILGenerator.MarkLabel(Label loc)
at ...(your code)
很明显代码中把ilFoo的Label试图放到ilBar里去,这时显然应该抛出一个ArgumentException,而Framework却傻乎乎的抛出了个NullReferenceException,害得我白到网上找了两个小时,却没发现什么类似的报错,最后才发现其实是一个参数弄错了
最新文章
- 2.EF中 Code-First 方式的数据库迁移
- iframe布局
- android 开发中 添加库文件 和so 文件的存放位置和添加依赖
- Datasnap Image
- 【23】宁以non-member、non-friend替换member函数
- Installing MySQL Server
- WindowsPhone 8 开发 之 本地数据库应用
- jquery Tab默认情况下自动切换
- HDOJ 1048 The Hardest Problem Ever(加密解密类)
- 理解Unity加载和内存管理
- MYSQL基本操作(上)
- python学习笔记(10)--组合数据类型(字典类型)
- 阻止 form 回车 自动提交
- go 定时器
- Win10共享打印机所需要的设置(无需密码访问实现打印机共享,共享不要密码)
- (面试)写出下面switch语句的输出结果
- Python -- Scrapy 框架简单介绍(Scrapy 安装及项目创建)
- [label][JavaScript][The Defined Guide of JavaScript] 如何声明变量
- 如何使用Bootstrap4显示和隐藏元素
- Python开发基础-Day5-字符编码、文件处理和函数基础(草稿)