/// <summary> /// Serializa usando o CompactSerializer. /// </summary> /// <param name="writer">Representa o compact writer.</param> public void Serialize(Colosoft.Serialization.IO.CompactWriter writer) { writer.Write(_name); writer.Write((int)_direction); if (_value != null) { if (_value is Queryable) { _value = ((Queryable)_value).CreateQueryInfo(); } if (_value is ReferenceParameter) { writer.Write((byte)2); ((Colosoft.Serialization.ICompactSerializable)_value).Serialize(writer); } else if (_value is QueryInfo) { writer.Write((byte)3); ((Colosoft.Serialization.ICompactSerializable)_value).Serialize(writer); } else { writer.Write((byte)1); var valueType = _value.GetType(); object value; if (valueType.IsEnum) { valueType = Enum.GetUnderlyingType(valueType); value = Convert.ChangeType(_value, valueType); } else { value = _value; } writer.WriteObject(value); } } else { writer.Write((byte)0); } }
/// <summary> /// Serializa os dados da instancia. /// </summary> /// <param name="writer"></param> public virtual void Serialize(Colosoft.Serialization.IO.CompactWriter writer) { for (var i = 0; i < _descriptor.Count; i++) { var field = _descriptor[i]; var value = _values[i]; writer.Write((byte)(value == null ? 1 : 0)); if (value != null) { try { var type = value.GetType(); writer.WriteObject(value); } catch (Exception ex) { throw new System.Runtime.Serialization.SerializationException(ResourceMessageFormatter.Create(() => Properties.Resources.Record_SerializeFieldError, field.Name, field.Type.FullName, ex.Message).Format(), ex); } } } }
/// <summary> /// Serializa usando o CompactSerializer. /// </summary> /// <param name="writer">Representa o compact writer.</param> void Colosoft.Serialization.ICompactSerializable.Serialize(Colosoft.Serialization.IO.CompactWriter writer) { writer.Write(_columnName); if (_value != null) { writer.Write((byte)1); var valueType = _value.GetType(); object value; if (valueType.IsEnum) { valueType = Enum.GetUnderlyingType(valueType); value = Convert.ChangeType(_value, valueType); } else { value = _value; } writer.WriteObject(value); } else { writer.Write((byte)0); } }