我正在关注WCF Web API chm文件的.6版本。我已经构建了我的服务,当我通过IE访问它时一切正常。但是当我创建我的控制台应用程序时,我不明白客户端如何知道“联系”类型。当然我可以添加一个参考,但世界上其他一些客户如何知道这些类型?
List<Contact> contacts = resp.Content.ReadAs<List<Contact>>();
客户如何知道Contact类的更改?谢谢。
答案 0 :(得分:3)
使用基于SOAP的WCF绑定,客户端通常会从WSDL生成客户端,这将指定这些自定义类型。
然而据我所知,在基于REST的Web API世界中,没有办法做到这一点。期望制作客户的第三方客户/程序员以其他形式获得数据合同,并建立兼容的类。
换句话说,实际上没有一种自动方式。
答案 1 :(得分:1)
客户端类型中与响应类型中的属性(名称/类型)匹配的每个属性都由ReadAs&lt; T&gt;映射。
如果您的响应类型和客户端类型上有字符串属性“Name”,则正在解析其值。
您不需要参考。
更新:如果您不想在客户端使用联系人类型,可以尝试这样的事情:
var json = JsonValue.Parse(response.Content.ReadAsStringAsync().Result);
如果服务器端的联系人类型具有“名称”属性,则应该能够执行以下操作:
var name = json["Name"];
(假设您的回复是单个联系人 - 如果是List&lt; Contact&gt;“json”将是JsonArray类型 - 您应该得到一个线索...... here是一个显示JsonValue和JsonArray用法的示例)。
关于“联系方式的变化”,请阅读this。