zoukankan      html  css  js  c++  java
  • 从invoke简单理解反射

    前言 程序集   :

    程序集是.NET应用程序的基本单位,包含了程序的资源、类型元数据和MSIL代码。根据程序集生成方式的不同,可分为静态程序集和动态程序集。程序集又可分为单文件程序集和多文件程序集,多文件程序集将程序集中的文件按类型组织到多个文件中。每个程序集,无论是静态的还是动态的,均包含描述该程序集中各元素彼此如何关联的数据集合,程序集清单就包含这些程序集元数据。程序集还可以进行版本控制和强名称等安全设置。

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

    2.1.1  模块的操作

    程序集由模块组成,每个程序集可以包含至少一个模块。每一个模块就是一个标准的PE文件(见第1章)。接下来,我们学习使用编译器来进行模块的生成、设置等基本操作。

    invoke 就是根据反射原理,调用方法:

    System.Web.UI.Page p = this.Page;(获取this.Page)

    Type pageType = p.GetType();(反射原理获取Type 类型)

    MethodInfo mi = pageType.GetMethod("BindAdsToPageByLocator");(反射原理根据方法名“BindAdsToPageByLocator”找到这个方法)

    DataTable dt = (DataTable)mi.Invoke(p, new object[] { 0, 0, code});   (“0, 0, code”为方法“BindAdsToPageByLocator”所需的参数,返回datatable类型)

  • 相关阅读:
    小老虎CSDN博客流量分析
    C#中字符串的内存分配与驻留池
    最简单的基于FFmpeg的封装格式处理:视音频分离器(demuxer)
    HDU 3037 Saving Beans(Lucas定理的直接应用)
    Linux中IRC通讯工具Pidgin的基本用法
    jQuery整理笔记八----jQuery的Ajax
    Android ServiceManager启动
    C++开源码项目汇总
    虚拟现实游戏的十大误区
    适用android的MVP:怎样组织展示层
  • 原文地址:https://www.cnblogs.com/juexin/p/3195232.html
Copyright © 2011-2022 走看看