使用.net 中的动态方法编程备忘录1(如何查看生成的动态方法的代码)

使用.net 中的动态方法编程备忘录4(DynamicMethod 类的构造函数及访问其他类的私有成员) 使用 类 这种编程方式,一个重要原因就是类的封装性。通过不同的访问修饰符(如private、public、protected等),可限定类成员具有不同的访问级别。一般来说:private 修饰符修饰的成员,只能由该类内部访问;protected 修饰的成员,除了允许当前类访问外,还可运行继承类访问;internal 修饰的成员,可允许同一个程序集内部访问;public 修饰的成员,不但允许同一程序集内部访问,还可运行其他程序集访问(当然,类也必须是 public 的)。在创建动态方法(DynamicMeth 阅读详情

    使用动态方法编程,常常不知生成的动态方法是否正确,这里介绍,使用工具软件查看动态生成的代码的方法。

 

    1、下载并安装可反编译.net程序的工具

 

    我一直用Reflector.exe来反编译和查看exe、dll文件的代码,Reflector.exe 有免费版本,足够使用了。首先,要下载Reflector.exe,只要在搜索引擎搜一下,很容易得到这个软件的下载链接。

   

    2、将发出的动态方法保存到.dll文件

 

    正常情况下,动态方法或动态类、动态生成的程序集并不需要保存,而为了反编译和查看其代码,就必须将之保存为磁盘文件,

    要保存动为磁盘文件,无论你原来程序中只是使用动态方法,还是使用动态类,即便本来没有动态生成的程序集,也必须通过动态程序集保存。

    我的做法,是另建立一个专门测试的项目,有时也需要在原来程序中添加相应测试方法,使用  System.Reflection.Emit.AssemblyBuilder 及 ModuleBuilder、TypeBuilder 等,创建一个 TypeBuilder(如原程序本来有则无需创建,如无则需要创建),在TypeBuilder中,定义动态方法,并执行原程序中本来的 方法,最终,通过 AssemblyBuilder来保存。

    示例:

    运行程序,执行发出动态方法的代码,会保存为一个磁盘文件。

    好像是,保存时,只能保存在测试程序的 exe所在目录,所以保存时,无需有前缀路径,只要有文件名即可。

    一旦正确执行并保存后,即可直接在资源管理器中的右键菜单中,以Reflector.exe 打开此dll。

    Reflector.exe打开后,会显示一个树状的程序集列表,点开你动态生成的程序集,向下逐步打开模块、类、类成员,双击类成员即可右侧窗格中显示该成员代码。

    Reflector.exe中查看代码时,可选择查看 IL(微软中间语言)代码、C#代码、C++代码、VB代码等等。

    IL代码是肯定可以看到的,而其他高级语言代码,有可能看不到,如果看不到,则有可能是Reflector.exe无法将之反编译成高级代码,这极有可能是你在发出动态代码时有错误,此时你可仔细查看 IL 代码,分析错误之处。

 

【AI+教育】别再让 Cursor 只当编辑器了!4 步解锁 Claude 官方技能! 本文介绍了在Windows环境下通过OpenSkills工具在Cursor中调用Claude AI技能的方法。主要内容包括:1)安装Node.js环境;2)全局安装OpenSkills工具;3)安装Claude官方技能库;4)通过AGENTS.md文件同步技能;5)在Cursor中直接调用技能完成Excel、PPT等任务。文章提供了详细的操作步骤和示例,帮助用户快速上手使用AI技能提升工作效率。 阅读详情

相关推荐

Mike 21如何制作随水深变化的糙率文件

MIKE 21如何制作随水深变化的糙率文件

zhuzhujiayoua的博客 2250

深入浅出.NET代码生成系列(7):动态生成代码与编译综合示例

前面说了这么多,大家可能会觉得,好像没弄出个玩意儿来啊,对啊,所以,本文就来个可以弄出个玩意儿的东东。 说明一下,这是一个综合示例,分为两大部分,第一部分,生成代码,输出到控制台窗口中;第二部分,把这些代码动态进行编译,并生成一个WinForm应用程序,双击动态编译的程序可以运行起来,点击窗口上的按钮,会弹出一个对话框。 好,下面我把整个示例的代码贴出来,很简单,你就新建一个控制台应用程序...

java开发指南博客 【转载】 193

MAC 青花瓷(Charles)爪机HTTPS 抓包

前段时间跟之前的产品小姐姐聊天,小姐姐说开发让她抓包帮忙看下数据,然而自己又不会,那就来写一篇简易版的教程 冲冲冲! 手上只有mac电脑跟iPhone手机,只做苹果手机的抓包,android7.0以上版本也没法通过正常的抓htts的包,让安卓开发装个后门吧,不是安卓开发并不知道是啥,连上USB之后访问chrome://inspect/#devices就能很简单的抓包 一、准备工具等 青花瓷...

Promise的博客 1614

将数据库中的.net原码进行动态编译及调用~

原文:http://www.cnblogs.com/minbear/archive/2004/05/12/9058.aspx将数据库中的.net原码进行动态编译及调用~ 1、为了反射,定义一个接口public interface IRunExpression {Hashtable MainRun(bool IsDebug);int Precision  {set;get;}}2、生成数

1347

易智联LM401模块学习(四)——双串口收发

串口的发送和接受有三种方式,分别是阻塞发送和接收(轮询)、中断方式发送和接收、DMA方式发送和接收。这里我使用阻塞+中断的方式实现双串口通信。简单的串口收发。

weixin_46046597的博客 991

告别OLE!Delphi操作Excel的3种轻量级方案横向评测(FlexCel/XLSReadWriteII/LibXL)

本文深入评测了Delphi操作Excel的三种轻量级方案:FlexCel、XLSReadWriteII和LibXL。通过技术架构、API设计、性能测试和实战案例的全面对比,帮助开发者选择最适合的工具,提升Excel文件处理效率,告别传统OLE方案的依赖和性能问题。

onion的博客 929

.Net 字符集与编解码

如果参数是一个对象,而对象中的字符串类型需要在定义封装对象的位置,通过StructLayout 属性的CharSet 来设置。这里首先测试了.Net 在Windows环境下运行情况下,.Net 默认使用ANSI 编解码,其中在 DllImport 中指定的 CharSet 对导出函数的直接字符串参数生效。这里主要针对于使用C++ API是遇到的一些编码被封送的情况测试。跟上面类似,但是Unicode 传送的不成功,想必是类型问题,Unicode 对应C++中应该对应使用wchar* 数组。

xunmeng2002的专栏 930

YOLOv8验证的命令以及计算coco指标

好久不看代码,都不知道怎么验证的了,来记录一下。1、计算coco指标。

毕竟是Shy哥 1481

.net开源后可以查看的源代码

通过此网站可以直接查询基于.net framework4.6的源码 也可以下载到本地通过VS 查看。 转载于:https://www.cnblogs.com/Benjamin/p/4895640.html

weixin_33816946的博客 320

【2DWT:2维离散小波变换(附Pytorch代码)】

图像信号具有非平稳特性,无法使用一种确定的数学模型来描述,而小波变换的多分辨率分析特性很好地解决了这个问题。小波变化的多分辨率特性使其既可以高效描述图像的平坦区域(低频信息、全局信息),也可以有效处理图像信号的局部突变(高频信息,即图像的边缘轮廓等部分)。小波变换在空域和频域同时具有良好的局部性,使其可以很好地聚焦到图像的任意细节。

NorthSmile的博客 1万+

2026.02.04 AI趋势|原生工作流爆发,智能体重构开发范式

2026年2月4日GitHub Trending榜单迎来关键转变——传统工具链项目占比骤降,AI原生工作流相关项目成为绝对主流。本次Top 20榜单中,超70%项目聚焦AI模型的四大核心能力:上下文增强、任务编排、自治执行、知识闭环。值得关注的是,Claude生态(如claude-mem)与OpenAIskills框架形成跨厂商协同,尽管设计理念有差异,但共同推动多模型智能体(Multi-Model Agent)成为新一代软件基础设施,AI开发正式从“单点调用”迈入“系统级编排”时代。

lpfasd123的博客 348

远程过程调用(RPC)简介

Remote Procedure Calls(远程过程调用) 本文译自:https://www.cs.rutgers.edu/~pxk/417/notes/03-rpc.html 简介 sockets是客户端/服务器网络通信模型中的基础,它为程序与程序之间建立连接、收发信息提供了相对简单的机制(甚至可以使用read/write系统调用),两个程序可以位于同一个主机,也可以位于不同的主机。 然而,这...

guotianqing的博客 1万+

YOLOv11涨点改进 | 全网独家下采样改进、细节涨点篇 | TGRS 2025 | 引入PWD参数化小波下采样模块,减少下采样过程中小目标的关键细节丢失,即插即用,助力高效涨点发论文

本文提出了一种改进YOLOv11小目标检测性能的参数化小波下采样(PWD)模块。PWD通过小波变换保留目标细节信息,增强频率域特征表达,有效解决了传统下采样导致的小目标信息丢失问题。该模块采用双分支设计,结合自适应频率选择和空间补偿机制,在红外图像和低光场景中表现出更强的抗干扰能力。实验表明,PWD能显著提升YOLOv11对弱纹理和低对比度目标的检测精度,同时保持计算效率。文章详细介绍了PWD的结构原理、实现代码及在YOLOv11中的集成方法,为小目标检测提供了有效的改进方案。

Ai缝合怪、助力小伙伴高效发论文 233

OpCodes.Call 与 OpCodes.Callvirt (使用.net 中的动态方法编程备忘录7)

<br />MSDN中,对 OpCodes.Call 与 OpCodes.Callvirt 的解释,分别为:<br /> <br />OpCodes.Call:<br /> <br />调用由传递的方法说明符指示的方法。<br /> <br />堆栈转换行为依次为: <br />1.将从 arg1 到 argN 的方法参数推送到堆栈上。<br />2.从堆栈中弹出从 argN 到 arg1 的方法参数;通过这些参数执行方法调用并将控制转移到由方法说明符表示的方法。完成后,被调用方方法生成返回值并将其发送给调

海底捞针 4068

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

在动态方法中的比较运算 (使用.net 中的动态方法编程备忘录9)

一、高级语言的比较运算比较运算,在C#中很简单,一般直接用如下运算符即可: 等于==不等于!=小于==小于等于==大于==大于等于==二、MSIL 中基元类型的比较运算在动态方法中,使用 ILGenerator 对象,OpCodes 与上述比较运算相关的,则有许多:Beq如果两个值相等,则将控制转移到目标指令 Bgq如果第一个值大于或等于第二个值,则将控制转移到目标指令。 Bge_Un当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令。 Bgt如果第一个值大于第二个值

海底捞针 1456

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

使用.net 中的动态方法编程备忘录5(在动态方法中使用条件语句)

1、程序执行时,除了顺序执行外,任何程序设计语言,都有条件语句、循环语句、无条件转移语句。而条件语句,几乎每个过程都离不开。在高级程序编程语言中,使用特定的关键字,编写条件语句是很方便的,如 if语句、if-else、if-else if语句、switch语句等等。但微软中间语句(MSIL)无特定的条件语句,要实现条件转移,必须定义Label,自己以比较语句、条件转移语句组合来实现。2、分析条件语句看下面的C#示例:private static string CompareResult(int i, int

海底捞针 1160

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

使用.net 中的动态方法编程备忘录6(OpCodes.Ldloc 与OpCodes.Ldloca)

<br />关于 OpCodes.Ldloc 和 OpCodes.Ldloca,MSDN 上说:<br /> <br />OpCodes.Ldloc:<br />将指定索引处的局部变量加载到计算堆栈上。<br /> <br />OpCodes.Ldloca:<br />将位于特定索引处的局部变量的地址加载到计算堆栈上。<br /> <br />好像说得很清楚,但其实却说得不太清楚。<br /> <br />开发过程中,曾有根据配置文件来生成动态方法的需求。在处理类似“A.B.C” 这样的对象的属性的属性时,

海底捞针 2216

使用.net 中的动态方法编程备忘录2(使用发出动态方法的意义)

软件开发,需要一定的灵活性。要实现灵活性,通常是根据配置信息,动态灵活地执行不同代码。比如一个Asp.net程序,你从数据库读出一个DataTable,按照要求,你需要为用户提供多种显示方案,如按Table方式显示时,Table不同行、列用不同格式显示。1、最笨的方法,为每种显示方式做一个页面。这种方式优点是运行效率是最高的,就对一个页面的维护来说,因逻辑简单,所以维护时逻辑也较简单;这种方式缺点是有多少显示方案,你就要为每种方案做一套页面,另外维护时虽然逻辑简单,但可能工作量较大。2、采用较灵活方式,设计

海底捞针 830

使用.net 中的动态方法编程备忘录3(DynamicMethod 的最优访问方式)

由 DynamicMethod 类的语法[ComVisibleAttribute(true)] publicsealedclassDynamicMethod : MethodInfo可知,DynamicMethod 继承自 MethodInfo,所以是可以用 Invoke 方法来调用的。但这种方式效率不高,更好的方式是声明一个与动态方法返回类型、参数相同的代理,然后用 DynamicMethod 的 CreateDelegate 方法来调用动态方法。如果动态方法中的代码不涉及IO,并且访问很频繁的情况下

海底捞针 1877

在动态方法中如何尽量减少定义的 LocalBuilder 数量 (使用.net 中的动态方法编程备忘录8)

<br />动态方法中,往往是对配置文件的循环解读中生成的,很多情况下,无法预先知道需要多少变量。<br /> <br />最笨的方法,当然是每当需要时,就定义一个变量,但这样,往往造成定义太多重复类型的变量,每个只用一两次。<br /> <br />特别是,LocalBuilder 类型变量,不能赋予 null 值,所以,你无法先声明一个LocalBuilder,需要时再根据 LocalBuilder 是否为null,而采用直接使用变量还是用 ILGenerator.DeclareLocal 定义后赋值再

海底捞针 1221

动态网页初学者用ASP.NET制作备忘录实例

   一位ASP.net初学者学习过程中整理的备忘录,包括“打开新的窗口并传送参数,为按钮添加对话框,删除表格选定记录,删除表格记录警告”等等常见问题的解决方法。1. 打开新的窗口并传送参数:  传送参数:response.write("window.open(*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+")")  接收参数:s

软件开发学习笔记 1234

构建高效脚本备忘录:从环境配置到最佳实践的开发效率指南

在软件开发与自动化运维中,脚本是连接环境配置、任务执行和系统集成的关键工具。其核心原理在于通过预定义的命令序列,将重复性操作自动化,从而提升开发与部署效率。脚本的技术价值不仅体现在减少人工操作错误,更在于实现复杂工作流的标准化与可重复性。无论是Shell脚本的系统管理、Python脚本的数据处理,还是特定工具(如报表设计器)的内嵌脚本,其应用场景已渗透到部署、测试、数据处理等各个环节。本文聚焦于如何系统化构建脚本备忘录,以解决环境变量配置、依赖管理等常见问题,并融入shell脚本和python脚本等热词的实

weixin_34389926的博客 343

.NET 自带报表 Rdlc 动态增加子报表

有时候,根据项目的需要,需要将项目需要的几个子报表集成到一个子报

我的地盘 5554

ASP.NET中的设计模式

GOF设计模式著作中的23种设计模式可以分成三组:创建型(Creational),结构型(Structural),行为型(Behavioral)。下面来做详细的剖析。创建型创建型模式处理对象构造和引用。他们将对象实例的实例化责任从客户代码中抽象出来,从而让代码保持松散耦合,将创建复杂对象的责任放在一个地方,这遵循了单一责任原则和分离关注点原则。下面是“创建型”分组中的模式:1.Abstract Fa

【Erica W】有问题,就问神奇海螺吧! 790

Irrlicht学习备忘录——1 HelloWorld

1 HelloWorld 官方代码($sdk)\examples\01.HelloWorld 看起来200多行代码,挺吓人。仔细看清楚点,实际上没那么多,真正的代码不足50行,其他都是注释。我的英文够烂了,开着词霸,一个一个词的看,都能看懂写的大概意思,比我水平高的人,应该更不是问题了。 这个例子估计多年没有修改了,写的注释都有些不适用了。一开头的一大段说的是如何配置IDE环境,并详

gameloong 1424

[最新版]Asp.net Ajax 编程备忘录----细数28个服务器端控件 [转载]

转载在-------http://www.cnblogs.com/me-sa/articles/568959.html Asp.net Ajax 编程备忘录----细数28个服务器端控件 [原创]     时间:2006-11-22              作者:坚强2002开篇:To forget what we think we know about the limitations

云中漫步 1966
上一篇: ASP.Net页面中,DropDownList、CheckBoxList控件和页面中动态控件的冲突
下一篇: 使用.net 中的动态方法编程备忘录3(DynamicMethod 的最优访问方式)
IsMe
博客等级 码龄25年 4粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值