我正在使用Xamarin.Forms开发适用于android和ios的应用程序。在iOS上运行时,在调用WCF时收到以下错误消息:
MonoTouch不支持动态代理代码生成。覆盖此方法或其调用方以返回特定的客户端代理实例
因此,我根据Monotouch/WCF: How to consume the wcf service without svcutil创建了此方法:
protected override IService1 CreateChannel()
{
return new Service1ClientChannel(this);
}
这导致我不得不创建Service1ClientChannel类。然后,通过相同的链接,我实现如下方法:
public CheckIfUserNameExistsResponse CheckIfUserNameExists(CheckIfUserNameExistsRequest request)
{
object[] _args = new object[1];
_args[0] = request;
return (CheckIfUserNameExistsResponse)base.Invoke("CheckIfUserNameExists", _args);
}
我遇到的问题是:base.Invoke不存在。仅base.BeginInvoke和base.EndInvoke。那我在做什么错?为什么在上面的链接中他们可以访问“调用”?当我检查ChannelBase定义时,没有“调用”。每个链接应该存在:https://docs.microsoft.com/en-us/dotnet/api/system.servicemodel.clientbase-1.channelbase-1.invoke?view=xamarinandroid-7.1&viewFallbackFrom=netframework-4.7.2
答案 0 :(得分:0)
我刚刚实现了“开始/结束”调用集。 仍然找不到更好的解决方案。但是此解决方案在以后的工作中效果很好。