www.baike369.com
百科369 > C#教程 > C#如何将程序集加载到仅反射上下文中

C#如何将程序集加载到仅反射上下文中


C#如何将程序集加载到仅反射上下文中

只反射加载上下文能够让我们检查为其他平台或.NET Framework的其他版本编译的程序集。

加载到此上下文中的代码只能检查,但是不能执行。因为不能执行构造函数,所以无法创建对象;因为该代码无法执行,所以不会自动加载依赖项。如果需要对依赖项进行检查,则必须自行加载。

可以使用下面的方法将程序集加载到只反射加载上下文中:

1. 使用ReflectionOnlyLoad方法重载可以加载给定了显示名称的程序集;使用ReflectionOnlyLoadFrom方法可以加载给定了路径的程序集。如果该程序集为二进制文件映像,则使用ReflectionOnlyLoad方法重载。

注意:不能使用只反射上下文从非执行上下文中的.NET Framework版本加载mscorlib.dll版本。

2. 如果该程序集具有依赖项,ReflectionOnlyLoad方法不会加载这些依赖项。如果需要对依赖项进行检查,则必须自行加载。

3. 使用程序集的ReflectionOnly属性确定是否将该程序集加载到了只反射上下文中。

4. 如果向该程序集或程序集中的类型应用了属性,就应该通过使用CustomAttributeData类来检查这些属性,以确保未尝试在只反射上下文中执行代码。使用System.Reflection.CustomAttributeData.GetCustomAttributes(System.Reflection.Assembly)方法的适当重载可获取表示应用于程序集、成员、模块或参数的属性的CustomAttributeData对象。

注意:应用于该程序集或其内容的属性可能是在该程序集中定义的,也可能是在加载到只反射上下文中的另一个程序集中定义的。我们无法事先知道这些属性是在什么位置定义的。

Copyright© 2011-2016 www.baike369.com All Rights Reserved