通过反射将变量值转为变量名本身
这是.NET反射的一个有趣小例子: 通过反射将变量值转为变量名本身.
当然要先添加命名空间:using System.Reflection;
示例代码如下:
class Program { string name = "strA"; string strA = "strB"; string strB = "Hello World~"; static void Main(string[] args) { Program p = new Program(); p.GetTypeValue(); p.GetStrValue(p.name); p.SetStrValue(p.strA); Console.ReadKey(); } //本文原址:http://www.cnblogs.com/Interkey/p/3460566.html /// <summary> /// 获取所有FieldInfo的值 /// </summary> void GetTypeValue() { Console.WriteLine("Method: GetTypeValue"); FieldInfo[] fis = this.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance); foreach (FieldInfo fi in fis) { Console.WriteLine(fi.Name + " 的值为:" + fi.GetValue(this).ToString()); } Console.WriteLine(); } /// <summary> /// 获取字符串str对应的变量名的变量值对应的变量值 /// </summary> /// <param name="str"></param> void GetStrValue(string str) { Console.WriteLine("Method: GetStrValue"); Type type = this.GetType(); //获取字符串str对应的变量名的变量值 Console.WriteLine(type.GetField(str, BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this).ToString()); Console.WriteLine( type.GetField( type.GetField(str, BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this).ToString(), BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this).ToString() ); Console.WriteLine(); } /// <summary> /// 设置字符串str对应的变量名的变量值 /// </summary> /// <param name="str"></param> void SetStrValue(string str) { Console.WriteLine("Method: SetStrValue"); //赋值前输出 Console.WriteLine(this.GetType().GetField(str, BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this)); //进行赋值操作 this.GetType().GetField(str, BindingFlags.NonPublic | BindingFlags.Instance).SetValue(this, "Hello Interkey~"); //赋值后输出 Console.WriteLine(this.GetType().GetField(str, BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this)); Console.WriteLine(); } //本文原址:http://www.cnblogs.com/Interkey/p/3460566.html }
代码已经相当清晰,所以就不多做解释了~
本文原址:http://www.cnblogs.com/Interkey/p/3460566.html
.NET的反射可参考:反射概述 或 了解.NET中反射机制的使用与分析。
.NET反射虽然执行效率相对较慢,但在软件破解过程中,作用却非常大。这里就留给有心人了~
本文的代码已上传到附件~
本文参考了以下文章:
因为感觉挺有意思的,所以就分享给大家~
还有,觉得有意思就顶吧~
作者:Cosmic_Spy
出处:http://www.cnblogs.com/Interkey/
有兴趣可以加群【.NET破解|反编译】请注明:博客园,谢谢~
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则肯定是你抄我的。
posted on 2013-12-05 23:47 Cosmic_Spy 阅读(3147) 评论(8) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)