StreamingContextStates.克隆确实如此

本文关键字:StreamingContextStates | 更新日期: 2023-09-27 18:18:42

CLR Via C#介绍了一种通过二进制序列化克隆对象的简单方法。

创建BinaryFormatter时指定StreamingContextStates.Clone,如下:

var formatter = new BinaryFormatter
{
    Context = new StreamingContext(StreamingContextStates.Clone)
};

StreamingContextStates.Clone的文档说它

克隆对象图。用户可以假设克隆的图将继续存在于同一进程中,并且可以安全地访问句柄或其他对非托管资源的引用。

很好,但我真的不知道这到底是什么意思。这在什么方面改变了BinaryFormatter的行为?谁能列举出使用这个标志的具体效果?

StreamingContextStates.克隆确实如此

序列化是这里的主题。
MS提供了一个"抽象"的迷你框架来允许对象的序列化。二进制格式化程序是该迷你框架概念的具体实现。

开发人员可以选择使用该框架概念来创建自己的自定义格式化器-或-
MS本身在创建小框架时考虑了进一步实现序列化。

所以他们提供了这些标志作为框架的一部分。

回答你的具体问题:这些标志对二进制格式化器没有任何影响,因为它已经被实现为一个工具(如果你喜欢的话)来跟踪对象图,并简单地将其转换为原始数据字节。
如果你创建了自己的序列化器,例如可以将对象保存到数据库、文件或共享内存或其他地方,你会希望使用你的序列化器的用户指定相应的标志。

除非我完全误解了2003年以来的微软开发者…:)(这是可能的!)

相关文章:
  • 没有找到相关文章