我使用Remoting也有很长的一段时间了。一直以来,我心中最痛的就是 DataRow不能序列化!

这使我无法这样地写 DataRow GetEmployee(int empid) , 而必须改为 DataTable GetEmployee(int empid) ;

自从发明了CBM后,这个也变成可能了。详细的代码如下:

这个代码的原理是,在客户端与服务器端通信的时候,如果发现有DataRow需要传输,则先把,这个参数换成null,

然后把DataRow打包在某个DataSet中,通过CallContext来进行传输。传输完毕后,再进行解包,把参数换会DataRow。

如果你有兴趣测试这个代码,可以到 http://www.contextboundmodel.net/ 里下载 CBM 的源代码。