C# 如何排除不符合';不指定类型?

C# 如何排除不符合';不指定类型?,c#,windows-phone-7,portable-class-library,typeloadexception,C#,Windows Phone 7,Portable Class Library,Typeloadexception,我有一个引用Windows Phone 7.1库的Windows Phone 7.1应用程序。该库引用的PCL包含Windows Phone 7或更高版本作为目标 在某一点上,应用程序试图从库中创建一个新的类实例,该库从PCL扩展了一个类。PCL类有一个受保护的构造函数,所以我在library类中重写它以使其公开。构造函数接受1个参数。在应用程序中,我创建了这个参数的一个实例,并将其传递给库中的构造函数,它没有自己的代码,只将:base()传递给另一个构造函数 我在windows phone e

我有一个引用Windows Phone 7.1库的Windows Phone 7.1应用程序。该库引用的PCL包含Windows Phone 7或更高版本作为目标

在某一点上,应用程序试图从库中创建一个新的类实例,该库从PCL扩展了一个类。PCL类有一个受保护的构造函数,所以我在library类中重写它以使其公开。构造函数接受1个参数。在应用程序中,我创建了这个参数的一个实例,并将其传递给库中的构造函数,它没有自己的代码,只将
:base()
传递给另一个构造函数

我在windows phone emulator中运行该应用程序,一切正常。应用程序加载后,我浏览了几个屏幕

我碰到了一个断点,一步一步地通过。我很好地进入了库的构造函数,但当我尝试进一步进入PCL的构造函数时,我只得到一个TypeLoadException,它说“加载类型时发生了故障”。堆栈跟踪在库构造函数处停止,没有内部异常

我还试用了WindowsPhone7.8模拟器。我还尝试使用无参数构造函数直接在库类的构造函数中创建新实例,并只说
:base(new…
,但都以同样的方式失败

我不知道如何找出问题出在哪里,因为我不知道它可能在寻找什么,而这是不可用的。我在项目的构建目录的清单中看到了库和PCL程序集

我的谷歌fu快干涸了。有人知道我可以在哪里继续寻找吗

谢谢。

我是个该死的白痴

正如上面所指出的,从PCL加载某些内容时出现问题,但这是一个非常深奥的错误。NET没有做好准备,只是在没有告诉我的情况下呕吐

为了解决这个问题,我注释掉了构造函数的整个主体,最后从PCL创建了几个其他类的实例,并将它们设置为成员变量。这起作用了

然后我开始取消对构造函数的注释,直到它再次失败。把我带到一个失败的班级。为其构造函数使用的所有对象传递null仍然会导致TypeLoadException,因此它必须是参数之一。我删除了所有参数,瞧,它确实起作用了。然后我一次一个地添加参数,直到它在我脸上爆炸

事实证明,我的问题的根源在于,尽管在WindowsPhone7和Silverlight4下编译得很好,但PCL使用的是WindowsPhone7实际上不支持的功能。即,共变和逆变通用接口。我不得不重构我的PCL,以便它能够处理不变的泛型类型,并且一切正常进行