【发布时间】:2013-12-03 11:05:15
【问题描述】:
我有一个实现给定接口的业务层,有一个没有实现的 WCF 服务,只是将接口用作合同。它路由到 BL 具体类:
BL 层
public interface IClass1
{
List<int> GetData();
}
public class Class1 : IClass1
{
public List<int> GetData()
{
//...
}
}
WCF 服务
<%@ ServiceHost Language="C#" Debug="true" Service="BusinessLayer.Class1" %>
<%@ Assembly Name="BusinessLayer" %>
在我的客户端,我有一个 MVVM Prism 模块,其中包含一个实现 IClass1 的服务类。这个想法是,我可以构建包含服务模块(通过服务与数据库通信)或直接包含 BL 项目(在这种情况下它将直接与数据库通信)的解决方案。
这似乎工作得很好,但我想在我的应用程序中启用异步等待。通常我只是使用<method>Async 调用来调用WCF Service 方法,然后让它传回Task。但是我在执行此操作时遇到错误,基本上是告诉我在使用 await 时我的服务模块实现需要返回 Task<List<int>>。
因为BL、服务层和服务模块之间只有一个接口,这意味着修改接口本身以返回任务,但我宁愿WCF服务能够返回List<int> (同步调用时)或 Task<List<int>> 通过 Async 方法调用时。
有没有什么方法可以在没有单独的 WCF 服务接口的情况下实现这一点?
【问题讨论】:
标签: c# wcf mvvm prism async-await