• XML序列化


    常见的两种模式,Binary和XML序列化,Binary二进制序列化没有什么限制,但是XML序列化有限制:

        (1)需序列化的字段必须是公共的(public)
        (2)需要序列化的类都必须有一个无参的构造函数
        (3)枚举变量可序列化为字符串,无需用[XmlInclude]
        (4)导出非基本类型对象,都必须用[XmlInclude]事先声明。该规则递归作用到子元素
            如导出ArrayList对象,若其成员是自定义的,需预包含处理:
            using System.Xml.Serialization;
            [XmlInclude(typeof(自定义类))]
        (5)Attribute中的IsNullable参数若等于false,表示若元素为null则不显示该元素。
            也就是说:针对值类型(如结构体)该功能是实效的
            若数组包含了100个空间,填充了10个类对象,则序列化后只显示10个节点
            若数组包含了100个空间,填充了10个结构体对象,则序列化后会显示100个节点
        (6)真正无法XML序列化的情况
            某些类就是无法XML序列化的(即使使用了[XmlInclude])
                IDictionary(如HashTable)
                System.Drawing.Color
                System.Drawing.Font
                SecurityAttribute声明
            父类对象赋予子类对象值的情况
            对象间循环引用
        (7)对于无法XML序列化的对象,可考虑
            使用自定义xml序列化(实现IXmlSerializable接口)
            实现IDictionary的类,可考虑(1)用其它集合类替代;(2)用类封装之,并提供Add和this函数
            某些类型需要先经过转换,然后才能序列化为 XML。如XML序列化System.Drawing.Color,可先用ToArgb()将其转换为整数
            过于复杂的对象用xml序列化不便的话,可考虑用二进制序列化

    在很多情况下,二进制序列化对对象的序列化信息更加完整、准确。
  • 相关阅读:
    paxos算法
    List
    es资料汇总
    尚硅谷Kafka
    lostach安装配置
    zookeeper安装
    zookeeper配置详解
    C# 微信企业付款给个人之相关配置
    JS--正则表达式验证
    uniapp小程序--自定义分享标题
  • 原文地址:https://www.cnblogs.com/ysharp/p/2025690.html
Copyright © 2020-2023  润新知