- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C#编程中的序列化
序列化
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,
它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
几种序列化技术:
1)二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态
很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对 象。您可以
将对象序列化到流、磁盘、内存和网络等等。远程处理使用序列化“通过值”在计算机或应用
程序域之间传递对象。
2 )XML 序列化仅序列化公共属性和字段,且不保持类型保真度。当您要提供或使用
数据而不限制使用该数据的应用程序时,这一点是很有用的。由于 XML 是一个开放式标
准,因此,对于通过Web 共享数据而言,这是一个很好的选择。SOAP 同样是一个开放式
标准,这使它也成为一个颇具吸引力的选择。
3 )使用提供的数据协定,将类型实例序列化和反序列化为XML 流或文档(或者
JSON 格式)。常应用于WCF 通信。
BinaryFormatter
序列化可被定义为将对象的状态存储到存储媒介中的过程。在此过程中,对象的公共字
段和私有字段以及类的名称(包括包含该类的程序集)都被转换为字节流,然后写入数据流。
在以后反序列化该对象时,创建原始对象的精确复本。
1、使一个类可序列化的最简单方式是按如下所示使用Serializable 属性标记。
2、有选择的序列化
通过用 NonSerialized 属性标记成员变量,可以防止它们被序列化
3、自定义序列化
1) 在序列化期间和之后运行自定义方法
最佳做法也是最简单的方法(在 .Net Framework 2.0 版中引入),就是在序列化期间和之后
将下列属性应用于用于更正数据的方法:
OnDeserializedAttribute
OnDeserializingAttribute
OnSerializedAttribute
OnSerializingAttribute
具体事例如下:
// This is the object that will be serialized and deserialized.
[Serializable()]
public class TestSimpleObject
{
// This member is serialized and deserialized with no change.
public int member1;
// The value of this field is set and reset during and
// after serialization.
private string member2;
// This field is not serialized. The OnDeserializedAttribute
// is used to set the member value after serialization.
[NonSerialized()
public string member3;
// This field is set to null, but populated after deserialization.
private string member4;
// Constructor for the class.
public TestSimpleObject()
{
member1 = 11;
member2 = Hello World!;
member3 = This is a nonserialized value;
member4 = null;
}
public void Print()
{
Console.WriteLine(member1 = {0}, member1);
文档评论(0)