2011-12-27 5 views
3

WCF Web APIのchmファイルの.6リリースに従っています。私は私のサービスを構築し、IE経由でアクセスするとすべて正常に動作します。しかし、私が私のコンソールアプリケーションを作成するとき、私はクライアントがどのように "接触"タイプを知ることができないのか理解していません。確かにリファレンスを追加することはできますが、世界中の他のクライアントがそのタイプについてどのように知っていますか?WCF WebAPIクライアントはサーバータイプについて知らない

List<Contact> contacts = resp.Content.ReadAs<List<Contact>>(); 

クライアントはContactクラスの変更についてどのように知っていますか?ありがとうございます。

答えて

1

応答タイプのプロパティ(名前/タイプ)と一致するクライアントタイプのすべてのプロパティは、ReadAs <T>によってマッピングされます。

レスポンスタイプとクライアントタイプに文字列プロパティ "Name"がある場合、その値は解析されています。

参照は必要ありません。

更新:サーバー側の連絡先タイプがプロパティ「名前」を持っていた場合

var json = JsonValue.Parse(response.Content.ReadAsStringAsync().Result); 

:あなたは、連絡先と仕事をしたくない場合は、このような何かを試みることができるクライアント側で入力します次の操作を行うことができる必要があります:

var name = json["Name"]; 

(あなたの応答は、単一接触したと仮定する - リスト<問い合わせ>「JSON」の場合にはタイプJsonArrayであろう - あなたは手がかりを取得する必要があります... here使用状況を示すサンプルですJsonValueとJsonArrayの)

「連絡先の変更」については、thisをお読みください。

+0

「連絡先」タイプについてクライアントがどのように知ることができるのか分かりません。だから私は依然として私のクライアントアプリケーションで定義されたContactクラスが正しいでしょうか? – Terrence

+0

私の回答を更新しました –

+0

アレクサンダーのおかげでありがとう。 – Terrence

3

SOAPベースのWCFバインディングを使用すると、クライアントは通常、これらのカスタムタイプを指定するWSDLからクライアントを生成します。

ただし、私が知っている限り、Web APIのRESTベースの世界では、そのための機能はありません。クライアントを作成する第三者の顧客/プログラマは、他の形式でデータ契約を与えられ、互換性のあるクラスを作成することが期待されます。

つまり、実際に自動的に行う方法はありません。

関連する問題