命名空间:System.Reflection
程序集:mscorlib.dll, netstandard.dll, System.Runtime.dll, System.Reflection.dll
将程序集加载到只反射上下文中,在只反射上下文中可以检查但不能执行程序集。
重载
ReflectionOnlyLoad(Byte[]):加载来自基于通用对象文件格式 (COFF) 的映像的程序集,该映像包含已发出的程序集。 程序集被加载到调用方的应用程序域的只反射上下文中。
ReflectionOnlyLoad(String):将给定显示名称的程序集加载到只反射上下文中。
ReflectionOnlyLoad(Byte[])
加载来自基于通用对象文件格式 (COFF) 的映像的程序集,该映像包含已发出的程序集。 程序集被加载到调用方的应用程序域的只反射上下文中。
public static System.Reflection.Assembly ReflectionOnlyLoad (byte[] rawAssembly);
参数
rawAssembly Byte[]
字节数组,它是包含已发出程序集的基于 COFF 的映像。
返回
Assembly
加载的程序集。
异常
ArgumentNullException
rawAssembly 为 null。
BadImageFormatException
rawAssembly 不是有效的程序集。
或 当前加载的是公共语言运行时 2.0 版或更高版本,而 rawAssembly 是用更高的版本编译的。
FileLoadException
无法加载 rawAssembly。
PlatformNotSupportedException
仅限 .NET Core:不支持此成员。
注解
不能执行加载到仅反射上下文中的程序集的代码。 若要执行代码,还必须使用 Load 方法将程序集加载到执行上下文中。仅反射上下文与其他上下文没有区别。 只能通过卸载应用程序域来卸载加载到上下文中的程序集。
ReflectionOnlyLoad(String)
将给定显示名称的程序集加载到只反射上下文中。
public static System.Reflection.Assembly ReflectionOnlyLoad (string assemblyString);
参数
assemblyString String
程序集的显示名称,由 FullName 属性返回。
返回
Assembly
加载的程序集。
异常
ArgumentNullException
assemblyString 为 null。
ArgumentException
assemblyString 为空字符串 ("")。
FileNotFoundException
assemblyString 未找到。
FileLoadException
assemblyString 已找到,但无法加载。
BadImageFormatException
assemblyString 不是有效的程序集。
或 当前加载的是公共语言运行时 2.0 版或更高版本,而 assemblyString 是用更高的版本编译的。
PlatformNotSupportedException
仅限 .NET Core:不支持此成员。
注解
依赖项不会自动加载到仅反射上下文中。不能执行加载到仅反射上下文中的程序集的代码。 若要执行代码,还必须使用 Load 方法将程序集加载到执行上下文中。是否将特定的权限授予程序集是基于证据的。 程序集和安全证据合并的规则如下所示:
备注
在中编译的可执行C++文件上进行反射可能会引发 FileLoadException。 这很可能是由于C++编译器从可执行文件中去除重定位地址或 .reloc 部分所致。 若要保留 .reloc 地址,请在链接时指定 /fixed:no。
仅反射上下文与其他上下文没有区别。 只能通过卸载应用程序域来卸载加载到上下文中的程序集。
相关阅读 >>
assembly.ReflectionOnlyLoad 方法
appdomain与assembly的动态加载与卸载代码详解
assembly.ReflectionOnlyLoadfrom(string) 方法
更多相关阅读请进入《ReflectionOnlyLoad》频道 >>

C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。