2009-08-31 11 views
1

WCFサービスに渡すオブジェクトがあります。次に、サーバー上で、サービスはオブジェクトのいくつかのプロパティを変更し、intを返します。WCFサービスが変更されたオブジェクトを返さない

サービスが呼び出された後、クライアント側では、オブジェクトのプロパティに対する変更は存在しません。

私の単体テストはうまく動作します。しかし、サービスを実行すると問題が発生します。

これを修正する方法についてのご意見はありますか?

答えて

2

サービス境界を超えて何かを渡すと、参照ではなく値によって渡されるため、サーバーからの変更はクライアントから渡されたオブジェクトに伝播しません。したがって、変更されたオブジェクトをクライアントに戻す必要があります。また、intを返す必要がある場合は、intオブジェクトと変更されたオブジェクトの両方を含むことができるラッパークラスを作成できます。

+0

ありがとうございました。これを修正する属性があることを期待していましたが、意味があります。 –

0

@jodogger、多分私は何かが不足していますが、サービスがintを返す場合は、あなたのオブジェクトを確実に変更しません。

問題は、オブジェクトが実際にサーバーに往復することがないことです。 WCFの接続が解除されているため、byrefではなくbyvalの値を渡す必要があります。

あなたはWCFサービスの値を変更する必要がある場合、あなたはこのような何かをする必要があります

myObject = WCFService.MethodName(myObject); 

実際に戻って来て、同じオブジェクトではありませんが、あなたは古いをつかうことになりますそのオブジェクトの新しい値を持つオブジェクト。

返されるオブジェクトは、インターフェイスのDataContractセクションと実装自体で作成する必要があります。

関連する問題