StreamingContextStates

StreamingContextStates

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

在创建StreamingContextStates.Clone时,它指定BinaryFormatter,如下所示:

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

The documentation for StreamingContextStates.Clone



很公平-但是我真的不知道这实际上意味着什么。这实际上以什么方式改变了BinaryFormatter的行为?谁能列出使用此标志的具体效果?

最佳答案

序列化是这里的主题。
MS提供了“抽象的”微型框架以允许对象序列化。
二进制格式化程序是该微型框架概念的特定实现。

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

因此,他们将这些标志作为框架的一部分提供。

要回答您的特定问题:这些标志对二进制格式化程序没有任何影响,因为它已经被实现为跟踪对象图并将其简单地转换为原始数据字节的工具(如果您愿意)。
如果您创建自己的序列化程序,该序列化程序可以将对象保存到数据库,文件或共享内存等中,那么您将希望使用序列化程序的用户指定相应的标志。

除非我从2003年以来就完全误解了MS开发人员..:)(可能!)

关于c# - StreamingContextStates.Clone实际上做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17156194/

10-10 21:45