反射 元数据

C#里的智能感知分成两种,对于当前工程内容的智能提示,这个和C++一样,是通过代码分析出来的,比较复杂。因为这个时候程序还没有编译,没有assembly可以获得。
对于引用dll里内容的智能提示,是通过反射实现的,相对简单一点,C++因为没有反射是做不到的。

metadata(元数据):是一系列的特殊数据表,描述了模块中定义的内容,有部分还用来指出托管模块引用的内容。元数据描述表包括定义表,引用表,清单表。

定义表又包括:模块表,类型表,方法表,属性表,字段表,参数表,事件表。

引用表包括:Assembly程序集引用表,模块引用表,类型引用表,成员引用表。

清单表:引用的外部模块描述信息,资源模块。

元数据的用途:

1. 在编译时,元数据消除了对头和库文件的需求,因为与引用的类型/成员相关的所有信息都包括在用IL(Intermediate language “中间语言”)来实现类型/成员的文件中。编译器可以直接从托管模块读取元数据。

2. 微软VS 使用元数据来帮助我们写代码。它的“智能感知(IntelliSense)”特性能解释元数据,指出一个类型提供了什么方法,属性,事件和字段。如果是一个方法,还能指出方法需要什么参数。

3. CLR的代码验证过程使用元数据来确保代码只执行“安全”的操作

4. 元数据允许将一个对象的字段序列化到一个内存块中,将其发送给另外一台机器,然后反序列化,在远程机器上重建对象状态。

5. 元数据允许垃圾收集器跟踪对象的生存期。垃圾收集器能判断任何对象的类型,病根据元数据知道那个对象中的哪些字段引用了其他对象。

时间: 2024-10-15 03:37:27

反射 元数据的相关文章

十七、C# 反射、特性和动态编程

反射.特性和动态编程 1.访问元数据 2.成员调用 3.泛型上的反射 4.自定义特性 5.特性构造器 6.具名参数 7.预定义特性 8.动态编程 特性(attribute)是在一个程序集中插入额外的元数据, 并将这些元数据同一个编程构造(比如类.方法或者属性)关联起来的一种方式. 反射 动态编程 一.反射 可以利用反射做下面这些事情. a.访问程序集中类型的元数据.其中包括像完整类型名称和成员名这样的构造, 以及对一个构造进行修饰的任何特性. b.使用元数据,在运行时动态调用一个类型的成员,而不

服务端常见性能隐患分享

中午午休时,正好收到公司的培训邮件,由公司性能测试组的一名年轻的同事为我们带来压测相关的分享,这部分对俺这个以应用开发为主的程序员来说,感觉帮助很大.课上内容非常的通熟易懂,涉及了一般应用接口开发中主要的性能问题(不属于分布式大并发),实用性非常的强,本文将选取个人认为其中相对常见部分进行介绍,不足之处望大家指出,再次感谢那名牛X同事,嘿嘿. 压力测试(Stress Test)指模拟实际应用中的软硬件环境和相应系统负载情况,在此条件下,对被测系统进行长时间或超大负荷的运行,来测试系统的性能.可靠

ASP.NET笔记誊录

元数据:代码中二进制级别达到重用,包括IL代码,类的属性,字段方法,程序集,资源等各种数据 VS中的的代码智能提示就是反射元数据来获取的,是这个.net中代码中灵魂 sqlconnection连接池(list集合,放在内存中):保存内连接对象 内连接对象跟连接字符串相关,当sqlconnection conn=new sqlconnection(strConn1) 就会创建一个内连接对象,此时会根据对象的连接的字符串去sqlconnection连接池中查看是否有该对象,如果有则取出来用.没有则创

Java -- JDBC_利用反射及 JDBC 元数据编写通用的查询方法

先利用 SQL 进行查询,得到结果集: 利用反射创建实体类的对象:创建对象: 获取结果集的列的别名: 再获取结果集的每一列的值, 结合 3 得到一个 Map,键:列的别名,值:列的值: 再利用反射为 2 的对应的属性赋值:属性即为 Map 的键,值即为 Map 的值. 使用 JDBC 驱动程序处理元数据 Java 通过JDBC获得连接以后,得到一个Connection 对象,可以从这个对象获得有关数据库管理系统的各种信息,包括数据库中的各个表,表中的各个列,数据类型,触发器,存储过程等各方面的信

JDBC学习笔记——利用反射及JDBC元数据编写通用的查询方法

我们的查询操作,对于不同的数据表examstudent和customers,会有不同的代码编写过程,利用反射和JDBC元数据可以编写通用的方法进行对不同数据表的查询. 在此之前我们是这样做的: 查询customers表中的字段以及字段值: 1 public Customer getCustomer(String sql, Object... args) { 2 Customer customer = null; 3 Connection connection = null; 4 Prepared

【转】JDBC学习笔记(5)——利用反射及JDBC元数据编写通用的查询方法

转自:http://www.cnblogs.com/ysw-go/ JDBC元数据 1)DatabaseMetaData /** * 了解即可:DatabaseMetaData是描述数据库的元数据对象 * 可以由Connection得到 */ 具体的应用代码: 1 @Test 2 public void testDatabaseMetaData(){ 3 Connection connection=null; 4 ResultSet resultSet=null; 5 try { 6 conne

程序集,元数据,应用程序域,反射,特定属性

元数据,反射,特定属性 元数据就是一大推表,类型定义表,字段定义表,方法定义表,属性定义表,特制属性表(Custom Attribute). 元数据是.Net Framework 的一个重要基石,反射.特制属性,就是基于元数据的, 当然特制属性是反射的一个应用. 反射其他应用? 反射主要用于FCL的类库中来提供用户更多的功能,一般用户开发的应用程序很少有机会用到反射. 1) 使用Visual Studio 的窗口设计器Desginer 去拖拽一个控件时,它有哪些属性,事件,属性(property

利用反射及jdbc元数据实现通用的查询方法

--------------------------------------------------------------------------------------------------------------------------------------------------------------- 1.customer类: package com.lanqiao.javatest; import java.sql.Date; public class Customer { p

Java下的框架编程(反射,泛型,元数据,CGLib,代码动态生成,AOP,动态语言嵌入)

Java 虽然没有动态语言般暴起,但仍然天连天,水接水的生出好多框架技术---反射(reflection),泛型(generics),元数据(annotation),proxies(proxy/cglib),代码动态生成(asm),AOP(aspectJ),动态语言嵌入(groovy/javascript/beanshell).面对着这些,我们像一夜暴富的农企,有点手足无措的样子. 反射是一种让框架能够根据 "以字符串形式存在的信息" 来调用对象的属性和函数的技术,是Java对C++最