反射的特点应用及应用场景

简介: 一、反射的作用与特点        反射提供了描述程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。

一、反射的作用与特点   

    反射提供了描述程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了属性,可以利用反射对它们进行访问。

二、反射的典型案例

    可以使用静态方法 GetType-- 从 Object 基类派生的所有类型都继承该方法 -- 获取变量类型的简单反射;

    可以使用反射获取已加载的程序集的完整名称。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Reflection;

  6. namespace ReflectionTest
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             int i = 42;
  13.             System.Type type = i.GetType();
  14.             System.Console.WriteLine(type);
  15.             Console.WriteLine();

  16.             System.Reflection.Assembly o = System.Reflection.Assembly.Load("mscorlib.dll");
  17.             System.Console.WriteLine(o.GetName());

  18.             Console.ReadKey();
  19.         }
  20.     }
  21. }


image

三、反射的应用场景

反射在下列情况下很有用:
当需要访问程序元数据中的属性时。请参见主题使用反射访问属性。
检查和实例化程序集中的类型。
在运行时构建新类型。使用 System.Reflection.Emit 中的类。
执行后期绑定,访问在运行时创建的类型的方法。请参见主题动态加载和使用类型。


注意事项:

    C# 关键字 protected 和 internal 在 IL 中没有意义并且在反射 API 中不会使用。IL 中对应的术语为“家族”和“程序集”。若要使用反射来标识 internal 方法,请使用 IsAssembly 属性。若要标识 protected internal 方法,请使用 IsFamilyOrAssembly。


 

来自MSDN官方博客

http://msdn.microsoft.com/zh-cn/library/ms173183(v=vs.90).aspx

相关文章
|
存储 NoSQL Java
使用Java实现高效的数据分析平台
使用Java实现高效的数据分析平台
|
Android开发
Android基础知识:什么是Fragment?与Activity的区别是什么?
Android基础知识:什么是Fragment?与Activity的区别是什么?
2455 54
|
传感器 缓存 安全
JUC第六讲:二面阿里竟然败在了 volatile 关键字上
JUC第六讲:二面阿里竟然败在了 volatile 关键字上
161 0
|
算法 网络协议 Java
Android面试知识点复习手册(收藏)
Android面试知识点复习手册(收藏)
209 0
|
前端开发 开发工具 git
GitLab/Git:在AndroidStudio上合并分支代码
GitLab/Git:在AndroidStudio上合并分支代码
1030 0
GitLab/Git:在AndroidStudio上合并分支代码
|
XML 前端开发 Android开发
Android自定义View-入门(明白自定义View和自定义ViewGroup)
为什么要自定义View? 主要是Andorid系统内置的View 无法实现我们的 需求,我们需要针对我们的业务需求定制我们想要的 View.
165 0
Android自定义View-入门(明白自定义View和自定义ViewGroup)
|
Linux Android开发
【Android 启动过程】Android 应用启动流程 | Activity 启动流程
【Android 启动过程】Android 应用启动流程 | Activity 启动流程
463 0
【Android 启动过程】Android 应用启动流程 | Activity 启动流程
|
缓存 安全 Java
万字总结!全网最全的Java并发编程知识点(一)
万字总结!全网最全的Java并发编程知识点
222 0
万字总结!全网最全的Java并发编程知识点(一)