你这样做不是很好的。
建议你看看设计模式这方面的内容,
这样吧,你就看一下关于工厂模式的这部分就行了。

解决方案 »

  1.   

    工厂模式我比较熟,但看不出来与这个问题的关系。请高手指教
      

  2.   

    这个问题我部分解决了,方案很简单,只是由局限性:解决办法就是不用Register的方法,而是用Marshal()与Disconnect()配对使用:TcpChannel tcpChannel = new TcpChannel(8080);
    ChannelServices.RegisterChannel(tcpChannel);前面不变,然后在服务器端实例化对象:ServerObject.ServerObj obj = new ServerObject.ServerObj();
    ServerObject.ServerObj2 obj2 new ServerObject.ServerObj2();通过Marshal()将其转换为ObjRef类型:ObjRef objRef = RemotingServices.Marshal(obj,"EchoMessage");
    ObjRef objRef1 = RemotingServices.Marshal(obj2,"EchoMessage2");此时在客户端就可以通过GetObject()方法来获得这两个对象了。
    如果要关掉ServerObj2。就在服务器端实现Disconnect()方法,来注销前面实例的对象:
    RemotingServices.Disconnect(obj2);通过这个方法,客户端就不能使用该对象了。当然这个方法有个局限,就是所有客户端调用的服务对象是同一个。也就是说,类似于SingleTon激活模式。至于有没有办法实现SingleCall模式,我也正在摸索中,目前没有找到答案。