通过反射将变量值转为变量名本身

这是.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反射虽然执行效率相对较慢,但在软件破解过程中,作用却非常大。这里就留给有心人了~

本文的代码已上传到附件~

本文参考了以下文章:

C#里面中将字符串转为变量名

通过字符串 反射 成类的实例

字符串转为变量名,通过字符串给变量赋值

因为感觉挺有意思的,所以就分享给大家~

还有,觉得有意思就顶吧~

通过反射将变量值转为变量名本身相关推荐

  1. 根据变量值取得变量的参数名

    写作于2017年2月17日. Java和ABAP只能根据字符串通过反射获得变量的metadata,像标题描述的这个需求听起来有点怪.需求是Mervin实现Range search时需要根据range ...

  2. ejs获取js变量值_EJS变量(注入值)

    ejs获取js变量值 Hi! Welcome to NODE AND EJS TEMPLATE ENGINE SERIES. Today, we will talk about EJS variabl ...

  3. c++如何把字符串转为变量名_如何优雅地计算多变量

    作者:包寒吴霜 中科院心理所硕士在读(名字/人格/社会/文化心理学) 知乎:https://www.zhihu.com/people/psychbruce 社会科学研究经常会遇到"超多变量& ...

  4. java反射 获取变量值_Java反射:如何获取变量的名称?

    如果您使用以下的调试信息进行编译:javac -g),局部变量的名称保存在.class文件中.例如,以这个简单的类为例:class TestLocalVarNames { public String  ...

  5. php js变量值sql_php 变量查询数据库

    <PHP精粹:编写高效PHP代码>--2.4节PHP数据库对象 本节书摘来自华章社区<PHP精粹:编写高效PHP代码>一书中的第2章,第2.4节PHP数据库对象,作者:(美) ...

  6. pythontk界面显示函数中的变量值_简单易学,西门子触摸屏3种修改变量值的方法!博图Wincc V14组态...

    应条友要求,今天分享3种修改触摸屏变量值的最常用方法! 全文约700字,通读4分钟! 看完本章,你将收获以下内容: 一:必会知识点:3种修改变量的方法及适用点 二:实例:3种方法修改触摸屏变量值 三: ...

  7. IAR中如何实时观察变量值

    用一个简单的程序演示一下,首先进入到调试界面. 选中要观察的变量,然后单击鼠标右键选择 Add to Watch "j",将要观察的变量依次添加到观察窗口,然后单步执行,或者让程序 ...

  8. JavaScript获取java变量值

    JavaScript获取java变量值 js变量获取JSP页面中java代码中的变量值.通过<%=java变量%>的方式赋值给js变量. 1.定义java变量,一定是全局变量. <% ...

  9. Python把变量名取为字符串

    程序运行时,其实变量名本身并不重要,更重要的是变量的类型和值 但我们花了很多心思为了考虑可读性而命名的(一长串)变量名,为何不能简单一点取出来呢? 这是一个比较小众的需求,但比较有意思,在网上找了一些 ...

最新文章

  1. 让Windows7运行速度更快的BIOS优化设置教程
  2. 3des java 库_java 3DES 加密
  3. c语言解一维波动方程,python绘制一维波动方程(初学者)
  4. Qt Creator使用其他构建系统
  5. 将null转换成数组_Javscript数组快速填充数据的8种方法
  6. AndroidManifest.xml文件详解(application)
  7. 李迟2022年2月知识总结
  8. 怎样获取php页面get的值,PHP循环获取GET和POST值的代码
  9. 【转载】如何使用docker部署c/c++程序
  10. 常见文件扩展名和它们的说明
  11. w10查看端口_win10系统使用dos命令查看端口的解决教程
  12. 【超图+CESIUM】【基础API使用示例】28、超图|CESIUM -【坐标转换】经纬度转世界坐标
  13. 51单片机 之 8*8 LED点阵(解决程序烧录没反应、显示拖影问题、取字模软件)
  14. 自动聊天机器人项目班 [一门课搞定聊天机器人]
  15. 2022年全球市场激光直接成像系统(LDI)总体规模、主要生产商、主要地区、产品和应用细分研究报告
  16. imp oracle reschema_oracle中imp命令详解(导入数据库)
  17. 项目是通过文件流的方法查看文件 无法直接在线查看mht后缀文件的解决方案
  18. 红米3s进不了recovery_红米 3S中文Recovery刷机教程
  19. XJTU_ 西安交通大学2020大学计算机作业-第六周
  20. 计算机b类核心期刊有哪些,B类及以上期刊有哪些

热门文章

  1. Python3 文件读写
  2. apply,call,bind区别
  3. Install KVM Hypervisor on arrch64 Linux Server
  4. Vue+ElementUI实现文件的下载与上传
  5. PyCharm-缩进 格式化代码
  6. 在iframe框架中全屏不好使的原因
  7. Docker logs 命令
  8. canvas手机端绘图解决方案
  9. PHP工程师面临的成长瓶颈
  10. 数据库表初始化,删除所有数据后主键ID从1开始