通过反射将变量值转为变量名本身
通过反射将变量值转为变量名本身
这是.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#里面中将字符串转为变量名
通过字符串 反射 成类的实例
字符串转为变量名,通过字符串给变量赋值
因为感觉挺有意思的,所以就分享给大家~
还有,觉得有意思就顶吧~
通过反射将变量值转为变量名本身相关推荐
- 根据变量值取得变量的参数名
写作于2017年2月17日. Java和ABAP只能根据字符串通过反射获得变量的metadata,像标题描述的这个需求听起来有点怪.需求是Mervin实现Range search时需要根据range ...
- ejs获取js变量值_EJS变量(注入值)
ejs获取js变量值 Hi! Welcome to NODE AND EJS TEMPLATE ENGINE SERIES. Today, we will talk about EJS variabl ...
- c++如何把字符串转为变量名_如何优雅地计算多变量
作者:包寒吴霜 中科院心理所硕士在读(名字/人格/社会/文化心理学) 知乎:https://www.zhihu.com/people/psychbruce 社会科学研究经常会遇到"超多变量& ...
- java反射 获取变量值_Java反射:如何获取变量的名称?
如果您使用以下的调试信息进行编译:javac -g),局部变量的名称保存在.class文件中.例如,以这个简单的类为例:class TestLocalVarNames { public String ...
- php js变量值sql_php 变量查询数据库
<PHP精粹:编写高效PHP代码>--2.4节PHP数据库对象 本节书摘来自华章社区<PHP精粹:编写高效PHP代码>一书中的第2章,第2.4节PHP数据库对象,作者:(美) ...
- pythontk界面显示函数中的变量值_简单易学,西门子触摸屏3种修改变量值的方法!博图Wincc V14组态...
应条友要求,今天分享3种修改触摸屏变量值的最常用方法! 全文约700字,通读4分钟! 看完本章,你将收获以下内容: 一:必会知识点:3种修改变量的方法及适用点 二:实例:3种方法修改触摸屏变量值 三: ...
- IAR中如何实时观察变量值
用一个简单的程序演示一下,首先进入到调试界面. 选中要观察的变量,然后单击鼠标右键选择 Add to Watch "j",将要观察的变量依次添加到观察窗口,然后单步执行,或者让程序 ...
- JavaScript获取java变量值
JavaScript获取java变量值 js变量获取JSP页面中java代码中的变量值.通过<%=java变量%>的方式赋值给js变量. 1.定义java变量,一定是全局变量. <% ...
- Python把变量名取为字符串
程序运行时,其实变量名本身并不重要,更重要的是变量的类型和值 但我们花了很多心思为了考虑可读性而命名的(一长串)变量名,为何不能简单一点取出来呢? 这是一个比较小众的需求,但比较有意思,在网上找了一些 ...
最新文章
- 让Windows7运行速度更快的BIOS优化设置教程
- 3des java 库_java 3DES 加密
- c语言解一维波动方程,python绘制一维波动方程(初学者)
- Qt Creator使用其他构建系统
- 将null转换成数组_Javscript数组快速填充数据的8种方法
- AndroidManifest.xml文件详解(application)
- 李迟2022年2月知识总结
- 怎样获取php页面get的值,PHP循环获取GET和POST值的代码
- 【转载】如何使用docker部署c/c++程序
- 常见文件扩展名和它们的说明
- w10查看端口_win10系统使用dos命令查看端口的解决教程
- 【超图+CESIUM】【基础API使用示例】28、超图|CESIUM -【坐标转换】经纬度转世界坐标
- 51单片机 之 8*8 LED点阵(解决程序烧录没反应、显示拖影问题、取字模软件)
- 自动聊天机器人项目班 [一门课搞定聊天机器人]
- 2022年全球市场激光直接成像系统(LDI)总体规模、主要生产商、主要地区、产品和应用细分研究报告
- imp oracle reschema_oracle中imp命令详解(导入数据库)
- 项目是通过文件流的方法查看文件 无法直接在线查看mht后缀文件的解决方案
- 红米3s进不了recovery_红米 3S中文Recovery刷机教程
- XJTU_ 西安交通大学2020大学计算机作业-第六周
- 计算机b类核心期刊有哪些,B类及以上期刊有哪些