【发布时间】:2016-10-29 13:34:30
【问题描述】:
我正在开发一个客户端/服务器项目,但很难让它工作,主要是因为在 PCL 中无法访问System.ServiceModel。
不过没关系,我设法使用从 PCL 调用的DependencyServices 来管理每个特定平台与服务器的连接。
我的问题是,例如,一旦我打电话
var result = DependencyService.Get<Interface>().Operation(param);
这将转到特定于平台的,在那里我正在做绑定、端点并从 WCF 调用真正的操作,即异步,所以从现在开始我不能在这个方法中从 WFC 返回结果,因为这将是操作完成后返回另一个方法。
我的目标是在 PCL 上完成大部分工作,因此我不必为每个平台多次编写界面。因此,在简历中,我需要一种从我的 PCL 中的服务器(WCF 或其他可以使其工作的)返回结果的方法。
【问题讨论】:
-
你可以使用另一个接口和依赖注入来做到这一点。顺便说一句,我在 PCL 中使用所有 WCF 调用,不知道为什么它不适合你。您使用的是 XForms 还是 Classic?
-
如果你调用的函数是异步的,如果你等待,结果将返回给同一个调用者。问题是什么?你能分享更多的函数定义和调用代码吗?
-
@YuriS 我正在使用 XForms。当我将 service.cs 放入 MyApp(Portable) 时,我收到类似 名称空间“System.ServiceModel”中不存在类型或名称空间名称“...”的错误...。如果我把它放在 MyApp.Droid 项目上它可以正常工作,所以我认为它在 PCL 中不起作用。希望你能解决这个问题。
-
我在表格上试了一下,效果很好。你如何生成你的代理?我使用 VS 并且可以正常工作
-
@YuriS 没有太多要分享的代码,我只是创建了一个简单的 Xamarin 项目,我正在尝试管理应用程序和服务器之间的简单连接。我按照Xamarin tutorials 创建了 WCF,它很好,直到它开始使用特定于平台的工作,这是我不想要的。