- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#反射机制
1. 反射机制基础类 1
(1) 反射机制的功能与介绍 1
(2) 反射层次模型图 1
(3) Assembly类获取程序及信息 1
(4) Module类获取程序集模块信息 2
(5) Type类获取类型的信息 2
(6) 利用反射调用方法 3
2. 特性(Attribute) 3
(1) Attribute介绍 3
(2) 示例 3
3. 自定义特性 3
(1) 自定义特性说明 3
(2) 示例 3
(3) AttributeUsage类的使用 4
(4) 可选参数与命名参数 5
(5) Attributes标识符 5
(6) 通过反射获取Attributes 6
作者:李志伟
时间:2014-02-08
反射机制基础类
反射机制的功能与介绍
审查元数据并收集关于它的类型信息的能力称为反射。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等。System.reflection命名空间包含的几个类,允许用户解析这些元数据表的代码:
System.Reflection.Assembly:表示一个程序集。
System.Reflection.Module:在模块上执行反射。
System.Type:表示各种类型。
System.Reflection.MethodBase:提供有关方法和构造函数的信息。
System.Reflection.MethodInfo:发现方法的属性并提供对方法元数据的访问。
System.Reflection.MemberInfo:获取或访问有关成员属性。
System.Reflection.FieldInfo:发现字段属性并提供对字段元数据的访问权。
System.Reflection.PropertyInfo:发现或访问属性(Property)的属性(Attribute)。
System.Reflection.EventInfo:发现事件的属性并提供对事件元数据的访问权。
System.Reflection.ConstructorInfo:发现或访问类构造函数的属性。
反射层次模型图
Assembly类获取程序及信息
class Program
{
static void Main(string[] args)
{
Assembly assem = Assembly.Load(mscorlib);//加载系统程序集
PrintInfo(assem);//输出程序集相关信息
assem = Assembly.LoadFrom(@F:\System.Data.SQLite.dll);//或使用LoadFile()方法
PrintInfo(assem);//输出程序集相关信息
assem = Assembly.GetExecutingAssembly();//获取当前执行代码的程序集
PrintInfo(assem);//输出程序集相关信息
Console.Read();
}
//输出程序集相关信息
static void PrintInfo(Assembly assem)
{
Console.WriteLine(程序集全名: + assem.FullName);
Console.WriteLine(程序集的版本: + assem.GetName().Version);
Console.WriteLine(程序集初始位置: + assem.CodeBase);
Console.WriteLine(程序集位置: + assem.Location);
Console.WriteLine(程序集入口: + assem.EntryPoint);
Type[] types = assem.GetTypes();//得到该程序集里所有的类型
Console.WriteLine(程序集下包含的类型数: + types.Length);
//foreach (var item in types)
//{
// Console.WriteLine(类: + item.Name);//输出类型名
文档评论(0)