网站大量收购独家精品文档,联系QQ:2885784924

反射学习整理.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
反射学习整理 反射学习整理 一、MSDN 上面找的学习资料 反射提供了封装程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例, 将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中 使用了属性,可以利用反射对它们进行访问。 反射通常具有以下用途: 使用 Assembly 定义和加载程序集,加载在程序集清单中列出的模块,以及从此程序集中查找类型并创建该类型的实例。 使用 Module 了解如下的类似信息:包含模块的程序集以及模块中的类等。您还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。 使用 ConstructorInfo 了解以下信息:构造函数的名称、参数、访问修饰符(如 public 或 private)和实现详细信息(如 abstract 或 virtual)等。使用 Type 的GetConstructors 或 GetConstructor 方法来调用特定的构造函数。 使用 MethodInfo 了解以下信息:方法的名称、返回类型、参数、访问修饰符(如 public 或 private)和实现详细信息(如 abstract 或 virtual)等。使用 Type 的GetMethods 或 GetMethod 方法来调用特定的方法。 使用 FieldInfo 了解以下信息:字段的名称、访问修饰符(如 public 或 private)和实现详细信息(如 static)等;并获取或设置字段值。 使用 EventInfo 来了解如下的类似信息:事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等;并添加或移除事件处理程序。 使用 PropertyInfo 来了解如下的类似信息:属性的名称、数据类型、声明类型、反射类型和只读或可写状态等;并获取或设置属性值。 使用 ParameterInfo 来了解如下的类似信息:参数的名称、数据类型、参数是输入参数还是输出参数,以及参数在方法签名中的位置等。 二、反射的重要应用与相关练习当您在一个应用程序域的仅反射上下文中工作时,请使用 CustomAttributeData 来了解有关自定义属性的信息。使用 CustomAttributeData,您不必创建属性的实例就可以检查它们。 二、反射的重要应用与相关练习 反射在下列情况下很有用: 反射在下列情况下很有用: 需要访问程序元数据的属性。 需要访问程序元数据的属性。 C# 具有一个反射系统,可用来检索用自定义属性定义的信息。主要方法是 GetCustomAttributes,它返回对象数组,这些对象在运行时等效于源代码属性。 下面是我参照 MSDN 写的一个例子:定义一个自定义属性,将其应用于若干实体并通过反射进行检索。 using System; using System.Collections.Generic; using System.Text; 4 5 namespace Attribut 6 { //允许指定多个属性实例,类 YaoJian 中进行了练习 [AttributeUsage(AttributeTargets.Class,AllowMultiple = true)] public class Students:Attribute 10 { string name; public int age; 13 14 public Students(string Name) 15 { 16 name = Name; 17 age = 18; 18 } 19 20 public string GetName() 21 { 22 return name; 23 } 24 } 25 //将自定义属性应用于类 26 [Students(李江)] 27 class LiJiang 28 { 29 // 30 } 31 32 //不定义 Students 属性 33 class ZhaoYong 34 { 35 // 36 } 37 //应用多个属性实例 38 [Students(姚键),Students(李云,age = 20)] 39 class YaoJian 40 { 41 // 42 } 43 class Program 44 { 45 static void Main(string[] args) 46 { 47 StudentsInfo(typeof(LiJiang)); 48 StudentsInfo(typeof(ZhaoYong)); 49 StudentsInfo(typeof(YaoJian)); 50 } 51 52 private static void StudentsInfo(Type t) 53 { Cons

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档