Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows Phone 7中访问便携库类时出现MissingMethodException_C#_Wcf_Windows Phone 7_Portable Class Library_Missingmethodexception - Fatal编程技术网

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

C# 在Windows Phone 7中访问便携库类时出现MissingMethodException,c#,wcf,windows-phone-7,portable-class-library,missingmethodexception,C#,Wcf,Windows Phone 7,Portable Class Library,Missingmethodexception,我有一个具有以下结构的项目: WP7客户机(参考文献2) 便携式图书馆(共享) WCF服务(参考文献2) ad 1)客户端还包含对服务(3)的服务引用,其类型从(2)重用。 ad 2)库包含服务和客户端都使用的数据契约(DataContract) 到目前为止还不错。所有这些都可以在WVGA 512 MB模拟器上完美运行。但当我在真实设备或emulator 7.1上运行它时。它在构造类(uknown类)的某个地方抛出MissingMethodException 我能够把它缩小到图书馆里的合同(经过

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

  • WP7客户机(参考文献2)
  • 便携式图书馆(共享)
  • WCF服务(参考文献2)
  • ad 1)客户端还包含对服务(3)的服务引用,其类型从(2)重用。
    ad 2)库包含服务和客户端都使用的数据契约(
    DataContract

    到目前为止还不错。所有这些都可以在WVGA 512 MB模拟器上完美运行。但当我在真实设备或emulator 7.1上运行它时。它在构造类(uknown类)的某个地方抛出
    MissingMethodException

    我能够把它缩小到图书馆里的合同(经过几个小时的评论)。每当代码触及可移植库中的任何类时,就会引发此异常。客户端(1)包含引用(copy local==true)。不知道我还能做什么

    客户端是WP7.1,可移植库是.NET4+/SL4+/WP7+,服务是.NET4.5

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

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

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


    更新3:所以它是基类。我删除了它的通用组件,但仍然不起作用。所以我完全去掉了基类,现在它可以工作了但为什么不工作?它适用于服务,适用于WVGA模拟器,为什么不适用于设备?我尝试将
    KnownType
    放在基类上,甚至放在子类上。什么都不管用。

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

    public IMyInterface<in TClass>
    {
      void DoSomething(TClass value);
    }
    
    public MyClass : IMyInterface<MyClass>
    {
      // not important
    }
    
    公共IMyInterface
    {
    无效剂量测定(TClass值);
    }
    公共MyClass:IMyInterface
    {
    //不重要
    }
    
    它实际上是由in(逆变)或out(协变)引起的。谢谢,微软。当我删除这些时,突然发现应用程序以前根本就没有启动的地方没有问题