反射的简单应用

首先有一个类

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace ConsoleApplication1
 8 {
 9     public class demo
10     {
11         public string name = "程序员";
12     }
13 }

测试类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication1
{class Program{static void Main(string[] args){Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();Type type = assembly.GetType("ConsoleApplication1.demo");     //命名空间名 + 类名object obj = Activator.CreateInstance(type, true);FieldInfo classField = type.GetField("name");string name = classField.GetValue(obj).ToString();Console.WriteLine(name);}}
}

运行后发现已经获取得到值了

 

因为Activator.CreateInstance是创建一个新实例。

 

但只想想想。这个name的值是固定的。也就是在项目中需要动态赋值

然后动态反射出来。即反射获取当前实例的值

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Reflection;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 
 8 namespace ConsoleApplication1
 9 {
10 
11     class Program
12     {
13         static void Main(string[] args)
14         {
15 
16             //创建一个实例
17             demo d = new demo();
18             d.name = "开发工程师";
19 
20             FieldInfo field = d.GetType().GetField("name");//获取类中的一个Field
21             object fieldValue = field.GetValue(d);//获取这个实例中的Field的代表的属性
22 
23             //Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
24             //Type type = assembly.GetType("ConsoleApplication1.demo");     //命名空间名 + 类名
25             //object obj = Activator.CreateInstance(type, true);
26 
27             //FieldInfo classField = type.GetField("name");
28             //string name = classField.GetValue(obj).ToString();
29             Console.WriteLine(fieldValue);
30 
31         }
32     }
33 }

结果是正确的。

 

博客园有很多前辈写的

http://www.cnblogs.com/davidyang78/archive/2010/06/09/1754562.html

http://www.cnblogs.com/zhangpengshou/archive/2012/03/21/2409206.html

 

转载于:https://www.cnblogs.com/nsky/p/5181051.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaFX 2.0示例介绍书

我最近完成了有关JavaFX 2.0 SDK新版本的书的编写,并且已经将它放在您附近的书店( Amazon )的书架上。 该书将逐步指导您完成JavaFX 2.0的来龙去脉。 当您遇到一章时,将看到一些菜谱,这些菜谱将带来一个问题&#xff0…

双纵坐标的绘图命令_工程师绘图必备软件——OriginLab 2019b

点击右上角关注,尽享后续精品软件OriginLab 2019b是OriginLab OriginPro 2019版本的加强版,这个软件对于许多人来讲并不陌生,可以说是科学家和工程师的绘图必备软件。新的版本也带来许多改变,软件拥有多种功能,这个版本…

Spring远程支持和开发RMI服务

Spring远程支持简化了启用远程服务的开发。 当前,Spring支持以下远程技术:远程方法调用(RMI),HTTP调用程序,Hessian,Burlap,JAX-RPC,JAX-WS和JMS。 远程方法调用&#xf…

ToString:身份哈希码的十六进制表示形式

我以前在方便的Apache Commons ToStringBuilder上写过博客,最近有人问我,在生成的String输出中出现的看似神秘的文本是什么构成的。 询问该问题的同事正确地推测出他正在查看的是哈希码,但与他实例的哈希码不匹配。 我解释说ToStringBuilder将…

登录id 黑苹果_黑苹果MacOSCatalina无法登录AppStore修复

先上图:惨红色的提示信息,把你拒之App Store门外,但是对之放弃、不与之斗争不是我们的节奏,请看破敌攻略:1.查看你的“关于本机”-->“概览”-->“系统报告”,如图:找到你的“网络”-->…

Web开发的入门指导

Web开发的入门指导web开发编程技术你点开此文,说明你对Web开发是有兴趣的,或者你正在思考开始学习Web开发。在这里,我会告诉你成为一名Web开发者的路线,是对初学者关于Web开发的指导。这篇文章不会教你如何写代码,而是…

过滤日志中不相关的堆栈跟踪行

我喜欢堆栈痕迹。 不是因为我喜欢错误,而是因为发生错误的那一刻,堆栈跟踪是无价的信息源。 例如,在Web应用程序中,堆栈跟踪向您显示完整的请求处理路径,从HTTP套接字到过滤器,Servlet,控制器&a…

Dijkstra 最短路算法(只能计算出一条最短路径,所有路径用dfs)

上周我们介绍了神奇的只有五行的 Floyd 最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最短路”。本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径”。例如求下图中的 1 号…

2016给自己一个交代

一、前言 在关于技术上的学习,常常有这样那样的计划,而最终一个都没有真正的落实。零散的学习,终究需要系统总结,才能使自己有所沉淀。从毕业至今,我一直在忙碌,为公司付出自己的很多很多,却只不…

建模步骤_古建设计 | sketchup建模步骤教程(简易入门版)

前言本篇教程主要是针对古建建模入门者。小N给大家分享一套我相对简易的建模步骤。(PS:但是估计有些人可能会感觉我做的东西已经繁琐了……)因为主要是为了让大家熟悉、入门和好记忆。所以讲的东西,小N我会相对简单,有些细节的内容不会更多展…

Linux下面的IO模型

1. Linux下的五种I/O模型 阻塞I/O模型: 一直阻塞 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空间,IO函数返回成功指示。 我们 第一…

PIT和TestNG突变测试简介

变异测试是一种技术,它可以发现测试未涵盖代码的哪些部分。 它类似于代码覆盖范围 ,但变异测试不限于在测试期间执行给定行的事实。 这个想法是修改生产代码(引入突变),这应该改变其行为(产生不同的结果&am…

系统架构的演变 -----自 罗文浩

转自:https://my.oschina.net/lwhmdj0823/blog/617713版权声明:罗文浩所有摘要: 一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加&#x…

前端请求接口post_前端如何优雅地模拟接口请求?(给你的代码加点小意外)

前言:作为一名前端开发程序猿,每天都被产品经理催着开发,项目一启动,产品就过来了。嘘寒问暖:大胸弟,你啥时开始做啊?一般我们都会直接告诉TA,你先找接口解决数据问题。而我们也会经…

java mongodb 返回所有field_JAVA高级之反射

更多精彩,请点击上方蓝字关注我们!今天跟大家分享JAVA高级之反射的知识。一、什么是反射反射就是把Java类中的各个成分映射成一个个的Java对象。即在运行状态中,对于任意一个类,都能够知道这个类的所以属性和方法;对于…

Linux入门笔记——cal、date、free、clear、history、man、whatis、uname

1、cal 显示日历2、date 显示系统当前的日期和时间3、df查看磁盘剩余空间的数量,常用参数 -h (human)人性化显示内容4、free显示空闲内存的数量,常用参数 -h (human)人性化显示内容5、clear清除控制终端显示…

Ueditor的配置及使用

Ueditor官网&#xff1a;http://ueditor.baidu.com/website/ &#xff08;项目需要JSP版本&#xff1a;UTF-8版&#xff09; 1.配置 <script type"text/javascript" charset"utf-8">window.UEDITOR_HOME_URL "${ctx}/assets/plugins/uedi…

努比亚z17s刷原生安卓_电脑运行手机APP,不会没关系,我推荐你使用显卡服务器运行安卓模拟器...

很多人都想用电脑端运行手机APP&#xff0c;但是又不知道怎么操作。纵横170yun小编推荐大家使用显卡服务器&#xff0c;在显卡服务器上运行安卓模拟器。让你轻轻松松在电脑端运行手机APP&#xff0c;甚至还可以多开噢 。如果你的电脑没有显卡&#xff0c;也没有关系&#xff0c…

Linux入门笔记——文件操作命令1

pwd Print name of current working directory&#xff08;打印出当前工作目录名&#xff09; cd Change directory&#xff08;更改目录&#xff09;例子&#xff1a;cd 更改工作目录到你的家目录&#xff08;和cd ~命令的运行结果是等同的 &#xff09;cd - 更…

使用JacpFX和JavaFX2构建富客户端

创建快速且可扩展的桌面客户端始终是一个挑战&#xff0c;特别是在处理大量数据和长时间运行的任务时。 尽管Eclipse RCP和Netbeans RCP是已建立的平台&#xff0c;但其想法是建立一个轻量级的框架来异步处理组件&#xff0c;类似于Web组件。 开发人员在线程主题上的工作应较少…