zoukankan      html  css  js  c++  java
  • 关于反射的一些总结

    关于反射的一些总结:

    1) Load,LoadFrom和LoadFile:
    Load:只加载本地程序集中指定的类(通过命名空间等方式指定)。
    LoadFrom:通过外部相对或者绝对路径加载指定的类库或者Exe等文件,且重复加载相同程序集仅第一次有效;如果该程序集引用其它程序集,会被自动加载。
    LoadFile:通过外部相对或者绝对路径加载指定的类库或者Exe等文件,重复加载相同程序集最后一次有效;如果该程序集引用其它程序集,不会被自动加载。
    【可具体参考我的博文:http://www.cnblogs.com/ServiceboyNew/archive/2011/11/17/2241215.html


    2)GetExecutingAssembly,GetCallingAssembly和GetEntryAssembly(Assembly静态方法):
    GetExecutingAssembly:获取该方法所在方法的程序集自身。
    GetCallingAssembly:获取调用该方法所在方法的程序集。
    GetEntryAssembly:

    【举例】
    假设有一个类库A,其中有一个方法Fun使用了GetExecutingAssembly,那么它会调用Fun所在方法的程序集
    如果A被B类库使用,且B中的方法Call调用了A的Fun,且Fun中使用了GetCallingAssembly,那么它先获取调用Fun的方法(即Call),然后获取Call所在的程序集

    【总结】一般前者是当前项目使用,后者往往是在发布成类库之后动态供其它程序使用,获取其它程序的Assembly等信息。

    3)获取整个Assembly中所有的类情况:
     3.1)先获取一个Assembly实例(参考方法2)。
     3.2)然后使用GetTypes获取全部的Type。

    4)获取某个特定命名空间下的全部类:
     无直接做法,建议使用方法3的结果对NameSpace属性进行判断(是否包含某个特定命名空间名等)

    5)获取当前Assembly的路径:
     5.1)先获取一个Assembly实例(参考方法2)。
     5.2)然后Location属性。

    备注:Location将包含完整路径和文件名(即便文件名做了修改也无妨)。

  • 相关阅读:
    资金管理2
    php面试题之三——PHP网络编程(高级部分)
    运用JS设置cookie、读取cookie、删除cookie
    PHP 程序员学数据结构与算法之《栈》
    《高性能MySQL》学习笔记
    如何配置Notepad++的C_C++语言开发环境
    memcached完全剖析–1. memcached的基础
    Redis和Memcached的区别
    地区三级联动
    lwip:与tcp发送相关的选项和函数
  • 原文地址:https://www.cnblogs.com/ServiceboyNew/p/3225668.html
Copyright © 2011-2022 走看看