0

ClientBaseで独自のWCFプロキシを使用していますが、svc utilのct属性のようなことを行い、プロキシにList<>コレクションタイプを返すように指示します。

nhibernateによって管理されているエンティティのためにList<>を使用できないため、IListを使用する必要があります

プロキシはsvcutilで生成されませんでした....私はそれを自分で書きました。

これどうやってするの?

4

2 に答える 2

2

残念ながら、コントラクトで宣言された型がIListのようなインターフェイス型である場合、WCFが実際にインスタンス化する型を制御する方法はありません(実際には、配列になります)。

http://msdn.microsoft.com/en-us/library/aa347850.aspxを参照してください。

「逆シリアル化中に、宣言された型がインターフェイスである場合、シリアル化エンジンは宣言されたインターフェイスを実装する型を選択し、型がインスタンス化されます。既知の型メカニズム(データコントラクトの既知の型で説明)はここでは効果がありません。タイプはWCFに組み込まれています。」

于 2009-10-09T08:01:39.170 に答える
0

プロキシ内のすべての参照を「配列」から「リスト」に手動で修正できるはずです。基本的には、面倒な検索と置換だけです。

しかし、何らかの理由でそれが機能しない場合は、プロキシクラスのラッパーを記述して、配列をリストに変換することができます。これはとにかく簡単かもしれません:

private object[] myProperty
public List<object> MyProperty
{
    get
    {
        return p.ToList();
    }
    set
    {
        //initialise if necessary
        p = value.ToArray();
    }
}
于 2009-10-09T08:28:07.790 に答える