背景描述:
我做一套PDA的管理系统,需要支持“在线”和“离线”的功能,“在线”需要用WebService操作远程服务器上的数据库,“离线”时直接操作PDA上的数据库,我分别做好了两个类用于分别操作:webService操作远程,localService操作本地。问题描述:
现在想将两个类同时实现一个接口,方便在客户端使用工厂模式区别调用,但是发现在远程的WebService中的类实现了接口后,在本地无法转换,错误提示:无法将类型为“localhost.Service”的对象强制转换为类型“MyInterface.IService”。
我想错误原因应该是,虽然WebService上的类实现了接口,但是系统已经将WebService的类本地化了,所以本地化后的类是没有实现接口的,所以就无法转换。但是不知道有什么方法可以解决这个问题呢。希望有高手指导下!

解决方案 »

  1.   

    很奇怪啊,为什么不直接使用localhost.Service呢,这里搞不懂为什么要转换
    这里只要判断是否在线,然后分别使用webService和localService就好啊
      

  2.   


    没有办法。你不能跑到服务器上实现客户端要的这个接口,这毫无用处。web service的客户端代理,人家就是根据xml序列化机制来做c/s数据交换,而不会去实现任何在服务器上的所谓接口。实际上,你应该创建一个实现了MyInterface.IService的类,然后它调用web service。
      

  3.   

    “localhost.Service” 是你在.NET中添加引用生成的吧?
    不知道你用的VS是哪个版本的,不如手写WS代理,不要使用工具生成,否则接口就变了
    这样你的工厂就可以根据需要调用了。
      

  4.   

    非常感谢各位的答复,我昨天自己试出解决的方法了,其实只要将本地化后的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 {