0

次の構造を持つプロジェクトがあります。

  1. WP7 クライアント (参考文献 2)
  2. ポータブル ライブラリ (共有)
  3. WCF サービス (参考文献 2)

ad 1) クライアントには、(2) から再利用された型を持つサービス (3) へのサービス参照も含まれます。ad 2) ライブラリには、サービスとクライアントの両方で使用される
データ コントラクト ( ) が含まれています。DataContract

ここまでは順調ですね。すべてが WVGA 512 MB エミュレーターで完全に動作します。しかし、実際のデバイスまたはエミュレーター 7.1 で実行すると、. MissingMethodExceptionクラス(未知のクラス)を構築する際にどこかをスローします。

(何時間ものコメントの後) ライブラリ (2) の契約に絞り込むことができました。コードがポータブル ライブラリのいずれかのクラスに触れるたびに、この例外がスローされます。クライアント (1) には参照が含まれています (copy local == true)。他に何ができるかわかりません。

クライアントは WP7.1、ポータブル ライブラリは .NET4+/SL4+/WP7+、サービスは .NET 4.5 です。

なぜこれが起こっているのか、実際のデバイス(および/またはエミュレーター7.1)のWP7内からポータブルライブラリのクラスを使用する方法。

更新: データ コントラクトをクライアント (1) プロジェクトに移動しました。しかし、それらにアクセスすると、同じ例外TargetInvocationException( inner を使用MissingMethodException) がスローされます。私は困惑しています。DataContract私は今、属性を疑っています。

更新 2 :DataContract属性でもありません。クラスは、抽象ジェネリック クラスから派生します。KnownType役立つ場合は、属性でマークしてみます。

更新 3 :基本クラスです。その汎用コンポーネントを削除しましたが、まだ機能しません。そのため、基本クラスを完全に取り除きましたが、現在は機能しています。しかし、なぜうまくいかないのでしょうか?それはサービスでも機能し、WVGA エミュレータでも機能しますが、デバイスでは機能しないのはなぜですか? KnownTypeサブクラスでも、ベースクラスを入れてみました。何も機能しません。

4

1 に答える 1

1

この奇妙な振る舞いをする可能性のある人のために。これは、共分散と反分散の指標によって引き起こされました。私はこの状況を持っています:

public IMyInterface<in TClass>
{
  void DoSomething(TClass value);
}

public MyClass : IMyInterface<MyClass>
{
  // not important
}

これは文字通りin (反変) またはout (共変)によって引き起こされます。ありがとう、マイクロソフト。これらを削除すると、以前はアプリケーションがまったく起動しないという問題が突然発生しなくなりました。

于 2014-05-24T00:02:22.300 に答える