C++/CLIにてWCFを実装しています。
このサイトにて構造体のマーシャリングは解決したのですがその構造体をWCFを用いて
サーバに送信するところでサーバ側に渡ってきた構造体の中身が全て「0」となってし
まいます。WCFに渡す直前までは構造体に意図した値が入っているのでWCF側の処理だと思
います。WCFに詳しい方がいましたら宜しくお願いします。
------------------------------------
Client.cpp(クライアント側)
------------------------------------
SendData(Data);
※Dataは構造体
-------------------------------------
Interface.h(クライアントとサーバに同一ファイルあり)
-------------------------------------
[DataContract]
public value struct Test
{
[DataMember]
int A;
[DataMember]
int B;
[DataMember]
int C;
};
[ServiceContract]
interface class AAAA
{
[OperationContract]
String^ SendData(Test test);
}
※クライアント側でInterface.hをインクルードしてTest構造体に値をセットしている
-------------------------------------
Service.h(サーバ側)
-------------------------------------
[ServiceBehavior]
public ref class Service : public AAAA
{
public:
virtual String^ SendData(Test test)
{
return 送信されたデータは + test.A + です;
}
}
※Service.hのSendDataの引数のTest構造体のメンバ変数の値が全てが「0」になって
しまっている。
----------------------------------------
Stringの文字列やArrayの配列は問題なくサーバ側に送信できるのですが構造体のみ
何故か値が「0]で送信されます。MSDN等で調べたのですがユーザ定義型については
[DataContract]を定義するような記述がありました。[DataContract]の記述方法が
これではダメなのでしょうか?サンプル等をみると[DataContract]を使用している
ものは必ずGetやSetの記述があるのですがこれらが必要かどうかも現時点で不明で
す。WCFに詳しい方がいましたらお手数ですが教えてください。
http://vsug.jp/tabid/63/forumid/51/postid/11619/scope/posts/Default.aspx
上記のサイトにて似たようなことをやっている例があったのですがこの例では
GetとSetが使用されています。