修正因为没有设置CurrentMember而导致FieldSize无效的问题
nnhy authored at 2012-11-19 10:08:28
2.73 KiB
X_NET20
using System;

namespace NewLife.Serialization
{
    /// <summary>二进制序列化设置</summary>
    public class BinarySettings : ReaderWriterSetting
    {
        #region 属性
        private Boolean _IsLittleEndian = true;
        /// <summary>是否小端字节序。x86系列则采用Little-Endian方式存储数据;网络协议都是Big-Endian;</summary>
        /// <remarks>
        /// 网络协议都是Big-Endian;
        /// Java编译的都是Big-Endian;
        /// Motorola的PowerPC是Big-Endian;
        /// x86系列则采用Little-Endian方式存储数据;
        /// ARM同时支持 big和little,实际应用中通常使用Little-Endian。
        /// </remarks>
        public Boolean IsLittleEndian { get { return _IsLittleEndian; } set { _IsLittleEndian = value; } }

        private Boolean _EncodeInt = false;
        /// <summary>编码整数。打开后将使用7位编码写入所有16、32和64位整数,节省空间。打开后字节序设置将会无效。默认关闭。</summary>
        public Boolean EncodeInt { get { return _EncodeInt; } set { _EncodeInt = value; } }

        private Boolean _IgnoreType = true;
        /// <summary>忽略类型。打开后将不输出对象类型,按照读取时指定的类型读取。默认打开。</summary>
        public Boolean IgnoreType { get { return _IgnoreType; } set { _IgnoreType = value; } }

        private Boolean _IgnoreName = true;
        /// <summary>忽略名称。打开后将不输出成员名称,按照读取时指定的类型读取。默认打开。</summary>
        public Boolean IgnoreName { get { return _IgnoreName; } set { _IgnoreName = value; } }
        #endregion

        #region 构造
        /// <summary>实例化二进制序列化设置</summary>
        public BinarySettings()
        {
            // 默认的大小格式为32位压缩编码整数
            SizeFormat = TypeCode.UInt32;
            // 默认使用字段作为序列化成员
            UseField = true;
        }
        #endregion

        #region 类型
        private Boolean _SplitComplexType = true;
        /// <summary>是否拆分复杂类型。将拆分数组、内嵌和泛型</summary>
        public Boolean SplitComplexType { get { return _SplitComplexType; } set { _SplitComplexType = value; } }

        /// <summary>类型样式</summary>
        public enum TypeKinds
        {
            /// <summary>普通类型</summary>
            Normal = 1,

            /// <summary>数组类型</summary>
            Array,

            /// <summary>内嵌类型</summary>
            Nested,

            /// <summary>泛型类型</summary>
            Generic
        }
        #endregion
    }
}