——————以下是MSDN的解释-------------应用程序域是一个操作系统进程中一个或多个应用程序所驻留的分区。同一应用程序域中的对象直接通信。不同应用程序域中的对象的通信方式有两种:一种是跨应用程序域边界传输对象副本(这种情况是否是加了[Serialize]特性的类?),一种是使用代理交换消息。MarshalByRefObject 是通过使用代理交换消息来跨应用程序域边界进行通信的对象的基类。不是从 MarshalByRefObject 继承的对象根据值隐式封送。当远程应用程序引用根据值封送的对象时,将跨应用程序域边界传递该对象的副本(这种情况是否是加了[Serialize]特性的类?)。MarshalByRefObject 对象在本地应用程序域的边界内可直接访问。远程应用程序域中的应用程序首次访问 MarshalByRefObject 时,会向该远程应用程序传递代理。对该代理后面的调用将封送回驻留在本地应用程序域中的对象。当跨应用程序域边界使用类型时,类型必须是从 MarshalByRefObject 继承的(上面不是说“不是从MarshalByRefObject 继承的对象根据值隐式封送...”吗?什么叫使用类型时?),而且由于对象的成员在创建它们的应用程序域之外无法使用,所以不得复制对象的状态。——————以上是MSDN的解释问题我写在括号里,还请前辈们讲解

解决方案 »

  1.   

    [Serializable]特性,不好意思打错了
      

  2.   

    对。使用类型时 -> 使用 (某个)类型 的时候:)
    ...when the type is used across application domain boundaries
      

  3.   

    “当跨应用程序域边界使用类型时,类型必须是从 MarshalByRefObject 继承的”
    这句话如何理解?
      

  4.   

    “当跨应用程序域边界使用类型时,类型必须是从 MarshalByRefObject 继承的”
    这句话如何理解?
      

  5.   


    这句话换句话,你从一个进程访问另一个进程里面的数据的话,访问的目标需继承自MarshalByRefObject,比如说Remoting之类的技术,这个边界是指跨进程,跨应用程序
    比如说我用浏览器调用正在运行的千千静听程序里面属性和方法,千千静听就要继承自MarshalByRefObject
      

  6.   


    第二段第二句话说:“不是从 MarshalByRefObject 继承的对象根据值隐式封送。当远程应用程序引用根据值封送的对象时,将跨应用程序域边界传递该对象的副本。”
    再结合我的疑问,就是说当跨应用程序传递对象副本时,可以不继承MarchalByRefObject。使用类型和使用对象副本的不同,导致了是否必须继承MarchalByRefObject的结果,这该如何理解?