程序集上的GetExportedTypes()抛出NotSupportedException

时间:2012-08-22 05:56:42

标签: windows-phone-7 reflection

我遇到了一些麻烦,让Windows Phone 7.5类库加载到WP Unit Test Framework中。它在我的程序集内部调用GetExportedTypes(),它抛出一个不包含任何细节的ReflectionTypeLoadException。它的消息是“ReflectionTypeLoadException”,其LoaderExceptions为null(“无法计算表达式”)。程序集未使用任何第三方程序集。如果我创建一个单独的WP7应用程序并执行相同的操作,我会得到相同的结果。我是一位非常有经验的Reflection用户,但由于缺乏任何详细错误,我的研究工作已完全停止。仅仅为了完整性,它是Fluent Assertions的Windows Phone版本。

2 个答案:

答案 0 :(得分:1)

异常上的Types数组怎么样?它包含值吗?如果是这样,它还包含null s吗?如果是这样,您可以找出哪些类无法加载:您知道程序集中的所有类,并且您知道正确加载了哪些类。缺少的是无法加载的类。也许这些信息提供了一些线索。

这个答案基于documentation,特别是这些位:

来自LoaderExceptions属性的备注:

  

LoaderExceptions属性检索与Types数组并行的Exception类型的数组。只要反射无法加载类,此数组将包含空值。

来自Types属性的文档:

  

Type类型的数组,包含在模块中定义并加载的类。该数组可以包含一些空值。

答案 1 :(得分:1)

我找到了! @GeertvanHorrik指出我最近写的blog post。我正在使用一个协变接口(使用 out 参数),运行时(!)不支持。为什么编译器不能保护我免受这种伤害,这对我来说是一个很大的谜(也是一个巨大的失望)