我想序列化一个FtpWebRequest类的实例。可能吗?当我尝试时,它给了我错误,该类没有标记为可序列化,这意味着我无法序列化对象,但在msdn文档中,他们提到了ISerializable.GetObjectData的显式实现
http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest_members(v=vs.90).aspx
这是什么意思?我可以序列化吗?困惑请帮忙
答案 0 :(得分:1)
不是,因此解释了这个方法:
基础结构。在后代类中重写时,使用序列化WebRequest所需的数据填充SerializationInfo实例。 (继承自WebRequest。)
这意味着它是一种基础结构方法(内部使用.NET代码)。 WebRequest
类是可序列化的,它需要直接从此类序列化数据,或者可能是FtpWebRequest
的基类。
链接后甚至说:
此API支持.NET Framework基础结构,不能直接在您的代码中使用。
答案 1 :(得分:1)
不,不是。虽然它继承了ISerializable
,但缺少必要的序列化构造函数。但也许更好的问题是:
在什么情况下可以有意义来序列化这个?
我想不到一个。 请求是操作类;最好是序列化数据(系统的状态) - 而不是使它工作的旋转齿轮。出于同样的原因,我不会尝试序列化连接,文件流等
找出使系统恢复到必要状态所需的数据;序列化数据。
答案 2 :(得分:0)
根据我的理解,FtpWebrequest类允许您与服务器进行交互,但GetObjectData方法要求被检索的对象必须是可序列化的,原因很明显。看一下这个问题,看看它是如何实现的: