在Windows Phone 7中访问便携式库类时出现MissingMethodException

本文关键字:MissingMethodException 便携式 Phone Windows 访问 | 更新日期: 2023-09-27 18:04:55

我有一个项目,它具有以下结构:

  1. WP7客户端(参考文献2)
  2. 便携式库(共享)
  3. WCF服务(参考文献2)

ad 1)客户端还包含对服务(3)的服务引用,其类型从(2)中重用。
ad2)库包含服务和客户端都使用的数据契约(DataContract)。

到目前为止一切顺利。所有工作完美的WVGA 512 MB模拟器。但是当我在真实设备或模拟器7.1上运行它时。它在构造一个类(未知类)时抛出MissingMethodException

我能够将其缩小(经过数小时的注释)到库(2)中的契约。每当代码触及可移植库中的任何类时,都会抛出此异常。客户端(1)包含引用(copy local == true)。我不知道我还能做什么。

客户端为WP7.1,可移植库为。net 4+/SL4+/WP7+,服务为。net 4.5。

为什么会发生这种情况,如何在实际设备(和/或模拟器7.1)上使用WP7中的可移植库中的类。

Update:我已经将数据合同移动到客户端(1)项目。但是当它们被访问时,仍然抛出相同的异常TargetInvocationException(带有内部MissingMethodException)。我困惑。我现在怀疑DataContract属性。

更新2:它也不是DataContract属性。类派生自抽象泛型类。如果有帮助,我会尝试用KnownType属性标记它。

Update 3:所以它是基类。我删除了它的通用组件,但仍然不起作用。所以我完全剥离了基类,现在它可以工作了。但是为什么它不起作用?它适用于服务,它适用于WVGA模拟器,为什么不适用于设备?我试着把KnownType的基类,甚至在子类。没有什么工作。

在Windows Phone 7中访问便携式库类时出现MissingMethodException

对于任何可能得到这种奇怪行为的人。这是由协方差和逆变指标引起的。我有这样的情况:

public IMyInterface<in TClass>
{
  void DoSomething(TClass value);
}
public MyClass : IMyInterface<MyClass>
{
  // not important
}

它实际上是由中的(逆变)或(协变)引起的。谢谢,微软。当我删除这些,突然没有问题,应用程序根本没有启动之前。

相关文章:
  • 没有找到相关文章