我正在寻找一种方法来完成下面源代码中所示的行为。我使用“始终生成消息合同”选项创建了 WCF 服务代理。我所有的请求和响应消息合约都实现了一个通用接口,我想使用相同的函数来执行它们。在我看来,应该有一种通过客户端代理发送消息的通用方式,但我在任何地方都找不到。任何帮助将不胜感激!
// I can do this
private IPagedResponse GetAllFoods()
{
NutrientDBClient client = new NutrientDBClient();
GetAllFoodsRequest request = new GetAllFoodsRequest();
GetAllFoodsResponse response = client.GetAllFoods(request);
return response;
}
// I'd like to do this
private IPagedResponse ExecutePagedRequest(IPagedRequest request)
{
NutrientDBClient client = new NutrientDBClient();
IPagedResponse response = (IPagedResponse)client.Execute(request);
return response;
}
我目前在 NutrientDBClient 中添加了一个 ExecutePagedRequest(IPagedRequest) 方法,并根据 IPagedRequest 的具体类型手动执行正确的服务操作。我正在寻找一种更优雅的方式,以便我可以简单地在消息合约上实现 IPagedRequest 并且它会自动神奇地工作。