使用接口接收WebService上的操作类问题,高手请进!

topglorylines 2010-11-02 03:10:56
背景描述:
我做一套PDA的管理系统,需要支持“在线”和“离线”的功能,“在线”需要用WebService操作远程服务器上的数据库,“离线”时直接操作PDA上的数据库,我分别做好了两个类用于分别操作:webService操作远程,localService操作本地。

问题描述:
现在想将两个类同时实现一个接口,方便在客户端使用工厂模式区别调用,但是发现在远程的WebService中的类实现了接口后,在本地无法转换,错误提示:无法将类型为“localhost.Service”的对象强制转换为类型“MyInterface.IService”。


我想错误原因应该是,虽然WebService上的类实现了接口,但是系统已经将WebService的类本地化了,所以本地化后的类是没有实现接口的,所以就无法转换。但是不知道有什么方法可以解决这个问题呢。希望有高手指导下!
...全文
107 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
topglorylines 2010-11-03
  • 打赏
  • 举报
回复
非常感谢各位的答复,我昨天自己试出解决的方法了,其实只要将本地化后的WebService类去实现这个接口就可以了。
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="ServiceSoap", Namespace="http://10.39.3.207/")]
public partial class Service : System.Web.Services.Protocols.SoapHttpClientProtocol,IService {
cdglynn 2010-11-02
  • 打赏
  • 举报
回复
“localhost.Service” 是你在.NET中添加引用生成的吧?
不知道你用的VS是哪个版本的,不如手写WS代理,不要使用工具生成,否则接口就变了
这样你的工厂就可以根据需要调用了。
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 uncanny 的回复:]
很奇怪啊,为什么不直接使用localhost.Service呢,这里搞不懂为什么要转换
这里只要判断是否在线,然后分别使用webService和localService就好啊
[/Quote]

因为lz希望这个接口更前端的程序不纠结于接口的具体实现,他已经说了:方便在客户端使用工厂模式区别调用。
  • 打赏
  • 举报
回复
[Quote=引用楼主 topglorylines 的回复:]
现在想将两个类同时实现一个接口,方便在客户端使用工厂模式区别调用,但是发现在远程的WebService中的类实现了接口后,在本地无法转换,错误提示:无法将类型为“localhost.Service”的对象强制转换为类型“MyInterface.IService”。


我想错误原因应该是,虽然WebService上的类实现了接口,但是系统已经将WebService的类本地化了,所以本地化后的类是没有实现接口的,所以就无法转换。但是不知道有什么方法可以解决这个问题呢。希望有高手指导下![/Quote]

没有办法。

你不能跑到服务器上实现客户端要的这个接口,这毫无用处。web service的客户端代理,人家就是根据xml序列化机制来做c/s数据交换,而不会去实现任何在服务器上的所谓接口。

实际上,你应该创建一个实现了MyInterface.IService的类,然后它调用web service。
uncanny 2010-11-02
  • 打赏
  • 举报
回复
很奇怪啊,为什么不直接使用localhost.Service呢,这里搞不懂为什么要转换
这里只要判断是否在线,然后分别使用webService和localService就好啊
山鹰 2010-11-02
  • 打赏
  • 举报
回复
不懂 ,顶了
fangxiaofelix 2010-11-02
  • 打赏
  • 举报
回复
路过帮你顶了,我也有问题在等待解决,呵呵

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧