我运行一个测试,作为响应返回一个动态对象(ExpandoObject)。
它可以工作,但JsonServiceClient无法转换对象
并以json格式返回数据和类型描述。
我们能做得更好吗?
public class DynamicAPIRequest : IReturn<object>
{ ... }
public object Post(DynamicAPIRequest request)
{
dynamic response = new ExpandoObject();
response.Name = "Donald Duck";
response.Nephews = new List<nephew>();
response.Nephews.Add(new nephew { name = "Huey" } );
...
return response;
}
在客户端
var nephews = client.Post<object>(new DynamicAPIRequest { uncle = "skroutz" });
/* returns
{Name:Donald Duck,Nephews:[{__type:Test.Client.Model.nephew,
Test.Client.Model,name:Huey},{name:Dewey},{name:Louie}]}
*/
我还能做什么?
答案 0 :(得分:3)
要删除__type
属性,您需要设置序列化配置以排除类型信息:
JsConfig.ExcludeTypeInfo = true;
来自this answer的神话:
默认情况下,只有在反序列化所需的时候才会发出__type,例如您的DTO包含接口,抽象类或后期绑定对象类型等。