`
javasee
  • 浏览: 925737 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

c#中的反射要怎样理解?

 
阅读更多
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。



程序代码在编译后生成可执行的应用,我们首先要了解这种可执行应用程序的结构。

应用程序结构分为应用程序域—程序集—模块—类型—成员几个层次,公共语言运行库加载器管理应用程序域,这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。

程序集包含模块,而模块包含类型,类型又包含成员,反射则提供了封装程序集、模块和类型的对象。我们可以使用反射动态地创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型,然后调用类型的方法或访问其字段和属性。反射通常具有以下用途。

(1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。
(2)使用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。
(3)使用ConstructorInfo了解构造函数的名称、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。使用Type的GetConstructors或GetConstructor方法来调用特定的构造函数。
(4)使用MethodInfo了解方法的名称、返回类型、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。使用Type的GetMethods或GetMethod方法来调用特定的方法。
(5)使用FiedInfo了解字段的名称、访问修饰符(如public或private)和实现详细信息(如static)等,并获取或设置字段值。
(6)使用EventInfo了解事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等,添加或移除事件处理程序。
(7)使用PropertyInfo了解属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,获取或设置属性值。
(8)使用ParameterInfo了解参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法签名中的位置等。

System.Reflection.Emit命名空间的类提供了一种特殊形式的反射,可以在运行时构造类型。
反射也可用于创建称为类型浏览器的应用程序,使用户能够选择类型,然后查看有关选定类型的信息。
此外,Jscript等语言编译器使用反射来构造符号表。System.Runtime.Serialization命名空间中的类使用反射来访问数据并确定要永久保存的字段,System.Runtime.Remoting命名空间中的类通过序列化来间接地使用反射。
分享到:
评论

相关推荐

    C#反射实例讲解C#反射实例讲解

    C#反射实例C#反射实例讲解讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解

    C#反射小结 C#反射小结 C#反射小结

    C#反射小结C#反射小结C#反射小结C#反射小结C#反射小结C#反射小结C#反射小结

    C#net反射实现访问类中的私有变量或者方法

    C#net反射实现访问类中的私有变量或者方法

    C#,利用反射动态创建对象

    C#,利用反射动态创建对象 C#,利用反射动态创建对象 C#,利用反射动态创建对象 C#,利用反射动态创建对象

    C# 反射工厂示例

    C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例

    C#中反射机制的使用

    C#中反射机制的使用文章中,所使用的实例代码源文件。

    C#中通过反射操作泛型

    在C#中通过反射操作一个List泛型。。

    C# 通过反射调用com组件

    C# 通过反射调用com组件,封装了几个简单的方法方便使用反射调用com。 var obj=new ComObj("excel.application"); obj["Visible"]=true; obj. InvokeMethod("Application.Workbooks.Open", fileName);

    C# 反射举例 反射实例

    是关于c#的一个反射举例,希望大家对C#的反射能够一个很好的认识,帮助大家更请简单的理解其中的意思

    关于C#的反射机制详解

    C#反射 反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定...

    详解C# 利用反射根据类名创建类的实例对象

    1、假设你要反射一个 DLL 中的类,并且没有引用它(即未知的类型): Assembly assembly = Assembly.LoadFile(程序集路径,不能是相对路径); // 加载程序集(EXE 或 DLL) dynamic obj = assembly....

    C# 工厂反射源码

    //反射创建 DataCache.SetCache(ClassNamespace, objType);// 写入缓存 } catch (System.Exception ex) { LogHelper.WriteLog(typeof(DataAccess), LogType_Enum.Error, ex); return null; } } return ...

    c# 反射实例

    c#反射 c#反射实例 开发环境VS2010 c#反射代码

    c# 反射测试demo

    c# 反射测试 demo

    C#中反射的应用小结

    反射是C#的一个重要概念,如何使用很重要,有必要抽时间好好学习一下!

    C# 反射经典实例,学习反射一步到位

    C# 反射 实例 示例 例子C# 反射 实例 示例 例子C# 反射 实例 示例 例子C# 反射 实例 示例 例子C# 反射 实例 示例 例子

    C# 反射原理

    Description: C# 反射原理的应用,简单的读取和保存数据到xml中,简单去介绍C/S架构中,运用反射原理的优缺点,以及什么时候需要用到反射

    C#插件反射 ReflectionPlugin.cs

    C#插件反射 ReflectionPlugin.cs

    C#反射基础学习

    C#反射学习,自己的学习笔记,涵盖了动态加载程序,每一小结以虚线结束,认真看完也就差不多学完了反射主要的类

    C#各种反射方法源码

    C#各种反射方法源码性能比较,包括:普通反射、接口调用、委托调用

Global site tag (gtag.js) - Google Analytics