反射原理

.net所编写的程序集包含两个重要部分:IL(中间语言代码) 和metadata(元数据)。

我们编写的代码中不是有很多很多的类吗,类有很多很多的成员,在编译代码的时候,元数据表就根据代码把类的所有信息都记录在了它里面(其实它就是一个数据结构,组织类的信息)。
而反射的过程刚好相反,就是通过元数据里记录的关于类的详细信息找到该类的成员,并能使它“复活”(因为元数据里所记录的信息足够详细,以致于可以根据metadata里面记录的信息找到关于该类的IL code并加以利用)。
最后对比下:
元数据形成:根据代码具体内容形成类的记录信息;
反射:根据元数据的记录找到所需的代码;

时间: 2024-12-23 07:01:34

反射原理的相关文章

java的反射原理与Spring的自动注入(转载)

Java反射原理与Spring的自动注入 反射的定义 java的反射机制就是在运行状态中, 对于任意一个类都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意一个方法和属性. 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. Sping的自动注入原理 一个Bean的类: public class User{ private String username; private String mobile; public String getUsernam

利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)

最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口: 1.public Connection getConnection()   获得数据库的连接 2.public boolean updateByPreparedStatement(String sql, List<Object>params)throws SQLException  更新数据库

运用反射原理的简单工厂模式和运用反射原理从数据库里读出数据直接封装到实体集合里

一:简单工厂 最初学习的一个运用简单工厂的例子是做一个计算器: 首先是接口 public interface Cal { public double Calcu(double num1,double num2); } 然后是加减乘除类实现计算接口: public class Add implements Cal{ @Override public double Calcu(double num1, double num2) { return num1+num2; } } 再写一个工厂类,里面有一

c#用反射原理递归遍历复杂实体对象

之前在网上看到的都是遍历那种比较简单的实体对象,但是如果有实体嵌套,甚至是包含有List<XXInfo>这种属性的时候就没有办法处理了.通过递归遍历的方式可以完成对复杂实体对象的所有属性的遍历,可以取值和赋值. 下面是关键部分的代码,有什么不对的地方路过的大大一定要指点哈. using System.Reflection; public System.Text.StringBuilder strB = new System.Text.StringBuilder();     public vo

团队开发项目 特点一 运用物理学反射原理

NABC框架 一.Need 客户希望更好玩一点,能锻炼脑力,能起到放松的作用,还不会沉溺于其中的游戏. 二.Approach (做法) 运用到数学与物理学中的反射原理,每一次反射,都要想好要改变所要的路径的角度. 三.Benefit(好处) 声音 游戏的音乐和内容配合紧密,给人的感觉自然和谐,和游戏融为一体,不紧不慢的节奏和粘粘的怪异声音也赋予了角色真实的生命力,轻松诙谐的感觉让人心情愉悦. 上手度 游戏采用鼠标(或手指——针对移动设备)操作,你需要利用挡板改变轨道,游戏开始后会比较简单,随着进

在一般处理程序中,把Form Post过来的表单集合转换成对象 ,仿 MVC post,反射原理

using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Reflection; using System.Web; using WebSite.Models; namespace testWebuploader.Scripts.Plugin.webuploader_v0._1._2 { /// <summary> /

C#中使用反射原理创建类对象

用例: 现在有一个命名空间为Device的Device.dll文件,它含两个类Device1和Device2:现通过反射原理创建Device1和Device2类,具体语句如下: //1.首先需要添加引用    using System.Reflection; //2.创建Device1 Assembly AsmDevice = Assembly.Load("Device");//加载命名空间 Type Device1Type= AsmDevice.GetType("Devic

简单模拟structs2核心控制器利用反射原理实现参数传递和物理视图跳转

在能够运用struct2框架进行简单网站开发后,对structs2的一些较原框架强大的功能希望有更深刻的理解,于是尝试从底层开始摸索,本文就在重新学习structs2后,利用简单代码对核心控制器的主要功能进行理解. 首先,介绍一下struct2的处理流程: 1.浏览器发出请求,即***.action 2.请求被核心控制器的StrutsPrepareAndExecuteFilter拦截 3.搜索structs.xml配置文件,寻找Action的属性name为***的配置信息,而后根据class属性

反射原理读取对象属性并设置属性值

Dictionary<string, string> dicNodes = new Dictionary<string, string>(); foreach (XmlNode node in nodes.ChildNodes) { if (node.NodeType==XmlNodeType.Element) { dicNodes.Add(node.Attributes["name"].Value,node.Attributes["value&quo

[转]Java Spring的Ioc控制反转Java反射原理

转自:http://www.kokojia.com/article/12598.html 学习一个东西的时候,如果想弄明白,最好想想框架内部是如何实现的,如果是我做我会怎么实现.下面我就写一个Ioc DI的程序.Spring就相当于一个Bean工厂,你写好自己的bean,输入配置文件,Spring就可以帮你自动生成bean对象.下面我们创建一个java工程SimulateIoc 我们先写二个Bean.内容都一样,只是类名不一样.定义一个Spring配置文件,我们起名字叫IocConfig.xml