【发布时间】:2013-09-11 17:17:26
【问题描述】:
我想做的是:
var client = new JsonServiceClient(ServiceUrl);
var request = new FooQuery {Id = 1};
IEnumerable<Project> response = client.Get(request);
但是,我的 FooQuery 没有实现任何 IReturn,我不希望它实现(它在没有 ServiceStack 引用的库中)。这是我的服务端:
业务对象库:
public class ProjectQuery
{
public int Id { get; set; }
}
应用主机:
Routes.Add<ProjectQuery>("/project", "GET");
服务:
public object Get(Foo request)
{
// do stuff.
}
是否有一些不错的、干净的方法来创建 JsonServiceClient 而无需在我的业务对象上使用 IReturn 接口?
【问题讨论】:
-
这篇文章 (stackoverflow.com/questions/12700702/servicestack-ireturn) 似乎与我想要的相似......但建议的方法对我不起作用(甚至无法编译)。
-
我认为关键是找到一种方法将您的
Foo对象转换为 URL 字符串,对吗?然后您可以围绕Get(string)方法编写简单的包装器。在ServiceClientBase类中的一些现有Get方法中使用了ToUrl扩展方法,但它们需要请求对象来实现IReturn(我看不出为什么IReturn 要求是在那里,如果它不在那里,那么我认为你的状态会很好)。 -
Mythz 在上一篇文章中说过,如果我们不在 DTO 上使用 IReturn 标记,那么我们可以使用 "List
response = client.Get - >(new ReqDto());"。我不认为他是正确的,因为 Get() 的 2 个重载要求 URL 或 IReturn。我的 DTO 可能非常复杂,所以我必须为每个 DTO 编写一个 URL 转换并让它们保持最新?这不是很好。
标签: c# servicestack