protected override object ReadBody(TLSerializationContext context)
        {
            object obj = Activator.CreateInstance(_objectType);

            for (int i = 0; i < _properties.Length; i++)
            {
                TLPropertyInfo tlPropertyInfo = _properties[i];
                PropertyInfo   propertyInfo   = tlPropertyInfo.PropertyInfo;

                object propertyValue;

                Type propType = propertyInfo.PropertyType;

                ITLSerializer tlSerializer = context.Rig.GetSerializerByObjectType(propType);

                if (tlSerializer is ITLVectorSerializer)
                {
                    var vectorSerializer = tlSerializer as ITLVectorSerializer;
                    TLSerializationMode?itemsSerializationModeOverride = GetVectorItemsSerializationModeOverride(vectorSerializer, propertyInfo, context);
                    propertyValue = vectorSerializer.Read(context, tlPropertyInfo.SerializationModeOverride, itemsSerializationModeOverride);
                }
                else
                {
                    propertyValue = tlSerializer.Read(context, tlPropertyInfo.SerializationModeOverride);
                }
                tlPropertyInfo.PropertyInfo.SetValue(obj, propertyValue);
            }
            return(obj);
        }
        protected override void WriteBody(object obj, TLSerializationContext context)
        {
            for (int i = 0; i < _properties.Length; i++)
            {
                TLPropertyInfo tlPropertyInfo = _properties[i];
                PropertyInfo   propertyInfo   = tlPropertyInfo.PropertyInfo;

                Type   propType      = propertyInfo.PropertyType;
                object propertyValue = propertyInfo.GetValue(obj);

                ITLSerializer tlSerializer = context.Rig.GetSerializerByObjectType(propType);

                if (tlSerializer is ITLVectorSerializer)
                {
                    var vectorSerializer = tlSerializer as ITLVectorSerializer;
                    TLSerializationMode?itemsSerializationModeOverride = GetVectorItemsSerializationModeOverride(vectorSerializer, propertyInfo, context);
                    vectorSerializer.Write(propertyValue, context, tlPropertyInfo.SerializationModeOverride, itemsSerializationModeOverride);
                }
                else
                {
                    tlSerializer.Write(propertyValue, context, tlPropertyInfo.SerializationModeOverride);
                }
            }
        }
 public TLVectorPropertySerializationAgent(TLPropertyInfo tlPropertyInfo, ITLVectorSerializer serializer, TLSerializationMode? itemsSerializationModeOverride)
     : base(tlPropertyInfo)
 {
     _serializer = serializer;
     _itemsSerializationModeOverride = itemsSerializationModeOverride;
 }
 public TLPropertySerializationAgent(TLPropertyInfo tlPropertyInfo, ITLSerializer serializer) : base(tlPropertyInfo)
 {
     _serializer = serializer;
 }
 public TLObjectPropertySerializationAgent(TLPropertyInfo tlPropertyInfo) : base(tlPropertyInfo)
 {
 }
            protected TLPropertySerializationAgentBase(TLPropertyInfo tlPropertyInfo)
            {
                TLPropertyInfo = tlPropertyInfo;

                _propertyName = TLPropertyInfo.PropertyInfo.Name;
            }
示例#7
0
 public TLVectorPropertySerializationAgent(TLPropertyInfo tlPropertyInfo, ITLVectorSerializer serializer, TLSerializationMode?itemsSerializationModeOverride)
     : base(tlPropertyInfo)
 {
     _serializer = serializer;
     _itemsSerializationModeOverride = itemsSerializationModeOverride;
 }
示例#8
0
 public TLPropertySerializationAgent(TLPropertyInfo tlPropertyInfo, ITLSerializer serializer)
     : base(tlPropertyInfo)
 {
     _serializer = serializer;
 }
示例#9
0
 public TLObjectPropertySerializationAgent(TLPropertyInfo tlPropertyInfo)
     : base(tlPropertyInfo)
 {
 }
示例#10
0
            protected TLPropertySerializationAgentBase(TLPropertyInfo tlPropertyInfo)
            {
                TLPropertyInfo = tlPropertyInfo;

                _propertyName = TLPropertyInfo.PropertyInfo.Name;
            }