我有一位生产用户在尝试从 Outlook 互操作程序集中获取程序集类型时遇到 ReflectionTypeLoadException
。我需要对应用程序进行编码以更好地调试问题,但我无法重现他的问题,因此我无法测试代码以确保它能够满足我的需要。
我找到了这篇文章:Error message 'Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.'其中有示例代码,但我想对其进行调试,以确保它适合我并了解它是如何工作的。
这是我抛出的代码。我已经加载了实际的程序集。当我枚举其中包含的类型时,我得到了异常:
Type t = assembly.GetTypes().Where(x => x.IsClass && x.Name.Equals("ApplicationClass")).FirstOrDefault();
任何人都可以提供示例或一些关于如何模拟此问题的见解,以便我可以验证我需要编写的代码吗?
谢谢。
最佳答案
今天我也遇到了同样的问题。以下是我根据我过去遇到过的一个案例得出的结论:
var assemblyName = new AssemblyName("TestAssembly");
var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
var module = assemblyBuilder.DefineDynamicModule("MainModule");
var typeBuilder = module.DefineType(name: "TestType", attr: TypeAttributes.Public | TypeAttributes.Class);
// uncommenting this stops the error. Basically, GetTypes() seems to fail if the ModuleBuilder
// has an "unfinished" type
//typeBuilder.CreateType();
module.Assembly.GetTypes();
关于c# - 如何模拟 ReflectionTypeLoadException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17882339/