OracleCommand 继承自 DBCommand, 它继承自MarshalByRefObject, 
为什么OracleCommand在作为参数传递的时候却报错?

解决方案 »

  1.   

    作为参数需要支持序列化作为远程对象是用的意思是应用程序域是一个操作系统进程中一个或多个应用程序所驻留的分区。同一应用程序域中的对象直接通信。不同应用程序域中的对象的通信方式有两种:一种是跨应用程序域边界传输对象副本,一种是使用代理交换消息。MarshalByRefObject 是通过使用代理交换消息来跨应用程序域边界进行通信的对象的基类。不是从 MarshalByRefObject 继承的对象根据值隐式封送。当远程应用程序引用根据值封送的对象时,将跨应用程序域边界传递该对象的副本。MarshalByRefObject 对象在本地应用程序域的边界内可直接访问。远程应用程序域中的应用程序首次访问 MarshalByRefObject 时,会向该远程应用程序传递代理。对该代理后面的调用将封送回驻留在本地应用程序域中的对象。当跨应用程序域边界使用类型时,类型必须是从 MarshalByRefObject 继承的,而且由于对象的成员在创建它们的应用程序域之外无法使用,所以不得复制对象的状态。
      

  2.   

    说白了,可能是有连接了
    Remoting应该只能传递没有连接的东西, 无状态的东东。。
      

  3.   

    再举个例子,.NET能传递DataSet作为Remoting的参数,但是不能传递DataReader作为参数,
    为什么呢?DataReader 是有状态的。所谓的状态其实不只是指数据库的连接。。
      

  4.   

    既然从MarshalByRefObject 继承的,必然有办法的