c# - 如何模拟 ReflectionTypeLoadException?

标签 c# exception outlook .net-assembly

我有一位生产用户在尝试从 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/

相关文章:

c# - ListView 和文件输出的问题

c# - OwnsOne 从表键中删除 IDENTITY

c# - 如何使用 Autofac 使用方法连接事件?

java - Struts2 自定义异常映射拦截器

android - 加载 fragment 时出现 NullPointerException

azure - 来自 powershell 的 Outlook Rest-API 返回誓言请求 (401)

c# - 使用 TypeMock 验证是否未调用具有特定参数的方法

go - 如何在内部完全停止 goroutines 错误

html - Outlook 忽略了我电子邮件的 CSS,包括字体系列和背景颜色

vba - 在 Outlook VBA 中使用 .Restrict 方法过滤单个收件人电子邮件地址