I tried Assembly.ReflectionOnlyLoadFrom(@"path\System.Core.dll")
和 ReflectionOnlyLoad 但我遇到了异常和错误。如何正确获取程序集中的所有命名空间/类?
例如我得到了这个例外。
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
要加载程序集然后获取所有类型的列表:
Assembly assembly = Assembly.ReflectionOnlyLoadFrom("System.Core.dll");
Type[] types = assembly.GetTypes();
不幸的是,如果any暴露的类型无法加载,有时这种加载失败是无法避免的。然而,在这种情况下,抛出的异常包含已成功加载的所有类型的列表,因此我们可以这样做:
Assembly assembly = Assembly.ReflectionOnlyLoadFrom("System.Core.dll");
Type[] types;
try
{
types = assembly.GetTypes();
}
catch (ReflectionTypeLoadException ex)
{
types = ex.Types;
}
这将为您提供所有类型的列表,包括接口、结构、枚举等...(如果您只想要类,那么您可以过滤该列表)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)