首页 > 代码库 > ProtobufSerializer类(NetworkComms 2.3.1源码了解和学习)

ProtobufSerializer类(NetworkComms 2.3.1源码了解和学习)

networkComms.net2.3.1开源版本,基于gpl V3协议。因为不能公开3.x版本的源码,所以基于此版本进行学习。3.X版本进行了诸多改进和Bug修复,使用方法上两者相差不大。/*请注意使用以下代码,需遵循GplV3协议*/using System;using System.Collections.Generic;using System.Text;using ProtoBuf;using System.IO;using System.Runtime.InteropServices;using ProtoBuf.Meta;#if ANDROIDusing PreserveAttribute = Android.Runtime.PreserveAttribute;#elif iOSusing PreserveAttribute = MonoTouch.Foundation.PreserveAttribute;#endifnamespace DPSBase{         ///ProtoBufSerializer  ProtoBuf序列化器    /// </summary>    [DataSerializerProcessor(1)]    public class ProtobufSerializer : DataSerializer    {                private static int metaDataTimeoutMS = 150000;#if ANDROID || iOS        [Preserve]#endif        private ProtobufSerializer() { }                #region Depreciated        static DataSerializer instance;              [Obsolete("Instance access via class obsolete, use DPSManager.GetDataSerializer<T>")]        public static DataSerializer Instance        {            get            {                if (instance == null)                {                    instance = GetInstance<ProtobufSerializer>();                    //Increase timeout to prevent errors when CPU busy                    RuntimeTypeModel.Default.MetadataTimeoutMilliseconds = metaDataTimeoutMS;                }                return instance;            }        }        #endregion                #region ISerialize Members                        /// <inheritdoc />        /// 把对象序列化为数据流        protected override void SerialiseDataObjectInt(Stream ouputStream, object objectToSerialise, Dictionary<string, string> options)        {                           ProtoBuf.Serializer.NonGeneric.Serialize(ouputStream, objectToSerialise);            ouputStream.Seek(0, 0);        }        /// <inheritdoc />        /// 把数据流序列化为对象        protected override object DeserialiseDataObjectInt(Stream inputStream, Type resultType, Dictionary<string, string> options)        {            return ProtoBuf.Serializer.NonGeneric.Deserialize(resultType, inputStream);        }        #endregion    }} http://www.cnblogs.com/networkcommshttp://www.networkcoms.cn 编辑

 

ProtobufSerializer类(NetworkComms 2.3.1源码了解和学习)