关于反射的一些总结:html
1) Load,LoadFrom和LoadFile:
Load:只加载本地程序集中指定的类(经过命名空间等方式指定)。
LoadFrom:经过外部相对或者绝对路径加载指定的类库或者Exe等文件,且重复加载相同程序集仅第一次有效;若是该程序集引用其它程序集,会被自动加载。
LoadFile:经过外部相对或者绝对路径加载指定的类库或者Exe等文件,重复加载相同程序集最后一次有效;若是该程序集引用其它程序集,不会被自动加载。
【可具体参考个人博文:http://www.cnblogs.com/ServiceboyNew/archive/2011/11/17/2241215.html】htm
2)GetExecutingAssembly,GetCallingAssembly和GetEntryAssembly(Assembly静态方法):
GetExecutingAssembly:获取该方法所在方法的程序集自身。
GetCallingAssembly:获取调用该方法所在方法的程序集。
GetEntryAssembly:blog
【举例】
假设有一个类库A,其中有一个方法Fun使用了GetExecutingAssembly,那么它会调用Fun所在方法的程序集。
若是A被B类库使用,且B中的方法Call调用了A的Fun,且Fun中使用了GetCallingAssembly,那么它先获取调用Fun的方法(即Call),而后获取Call所在的程序集。io
【总结】通常前者是当前项目使用,后者每每是在发布成类库以后动态供其它程序使用,获取其它程序的Assembly等信息。命名空间
3)获取整个Assembly中全部的类状况:
3.1)先获取一个Assembly实例(参考方法2)。
3.2)而后使用GetTypes获取所有的Type。引用
4)获取某个特定命名空间下的所有类:
无直接作法,建议使用方法3的结果对NameSpace属性进行判断(是否包含某个特定命名空间名等)反射
5)获取当前Assembly的路径:
5.1)先获取一个Assembly实例(参考方法2)。
5.2)而后Location属性。程序
备注:Location将包含完整路径和文件名(即使文件名作了修改也无妨)。方法