ClientBaseで独自のWCFプロキシを使用していますが、svc utilのct属性のようなことを行い、プロキシにList<>コレクションタイプを返すように指示します。
nhibernateによって管理されているエンティティのためにList<>を使用できないため、IListを使用する必要があります
プロキシはsvcutilで生成されませんでした....私はそれを自分で書きました。
これどうやってするの?
ClientBaseで独自のWCFプロキシを使用していますが、svc utilのct属性のようなことを行い、プロキシにList<>コレクションタイプを返すように指示します。
nhibernateによって管理されているエンティティのためにList<>を使用できないため、IListを使用する必要があります
プロキシはsvcutilで生成されませんでした....私はそれを自分で書きました。
これどうやってするの?
残念ながら、コントラクトで宣言された型がIListのようなインターフェイス型である場合、WCFが実際にインスタンス化する型を制御する方法はありません(実際には、配列になります)。
http://msdn.microsoft.com/en-us/library/aa347850.aspxを参照してください。
「逆シリアル化中に、宣言された型がインターフェイスである場合、シリアル化エンジンは宣言されたインターフェイスを実装する型を選択し、型がインスタンス化されます。既知の型メカニズム(データコントラクトの既知の型で説明)はここでは効果がありません。タイプはWCFに組み込まれています。」
プロキシ内のすべての参照を「配列」から「リスト」に手動で修正できるはずです。基本的には、面倒な検索と置換だけです。
しかし、何らかの理由でそれが機能しない場合は、プロキシクラスのラッパーを記述して、配列をリストに変換することができます。これはとにかく簡単かもしれません:
private object[] myProperty
public List<object> MyProperty
{
get
{
return p.ToList();
}
set
{
//initialise if necessary
p = value.ToArray();
}
}