是不是把一个类定义为MarshalByRefObject继承的和序列化的就可以远程返回了呢??不管它里面包含什么样的数据都能正确返回完整的数据??也就是说它包含的指针指向的数据返回到客户端也行吗???

解决方案 »

  1.   

    应该是没有问题,你要保证你的server和你的client都知道YardData
      

  2.   

    to colin666(边缘) :
    我试过,但得到的都说里面的aryData是一个无法计算的值,是空的!应该怎样做,注意一些什么问题才行呢??请指教!!!
      

  3.   

    我见过的问题和你的有些差别,不过你可以试试。首先,检查一下你使用的对象的序列化和反序列化需要调用的函数是否编写正确;其次,其中涉及到的类也需要在其定义处使用[Serializable]标识,并且需要实现序列化函数public override void GetObjectData(SerializationInfo info, StreamingContext context),以及反序列化函数public 类名(SerializationInfo info, StreamingContext context)。在调用的地方需要返回的参数前用ref标识传输方向。试试吧,希望对你有帮助。
      

  4.   

    MarsahlByRefObject只是传递了一个代理,不会Serialize/Deserialize实际的对象。也就是说,对象的成员变量并没有被复制到客户端去。所以,Client只能调用Remoting对象的方法,直接在客户端访问代理的成员变量不能得到这些变量在服务器端的值。在你的例子中,如果希望在客户端得到服务器TUArray* aryData的值,那么你需要将anyData封装成为一个属性(Property),然后再Client端调用get_anyData读取它的值。
    另外,这个指针在Client程序中是没有意义的,因为它指向的对象并没有被复制到Client程序。