- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- T_CNHAW 0011-2024 干眼诊疗中心分级建设要求.pdf
- 2025年道路交通安全法律法规知识竞赛题库及答案(共770题) .pdf
- ANSYS CFD-Post使用细节说明.pdf VIP
- 小学生阅读能力测试表.pdf
- 街头女郎玛吉.pdf
- 小学生心理健康教育实施现状及改进建议教学研究课题报告.docx
- 2025年山西卫生健康职业学院单招职业倾向性测试题库及完整答案1套.docx VIP
- 新苏教版小学科学三年级下册10《声音的传播》教学设计.pdf VIP
- 八年级下册物理期中复习(压轴60题19大考点)-八年级下册物理同步知识解读与专题训练(苏科版)(解析版).docx
- 2025年人教版一年级数学下册第四单元测试卷(含答案).docx VIP
文档评论(0)