using System; using ZeroLevel.Services.Serialization; namespace ZeroLevel.DocumentObjectModel { public sealed class AttachContent : IBinarySerializable { /// <summary> /// ID /// </summary> public string Identity; /// <summary> /// Title /// </summary> public string Caption; /// <summary> /// Description (optional) /// </summary> public string Summary; /// <summary> /// Content type /// </summary> public ContentType ContentType; /// <summary> /// Binary content /// </summary> public byte[] Payload; public AttachContent() { } public AttachContent(IBinaryReader reader) { Deserialize(reader); } public AttachContent(string identity, ContentType contentType) { Identity = identity; ContentType = contentType; } public AttachContent(string identity, string caption, ContentType contentType) { Identity = identity; Caption = caption; ContentType = contentType; } public AttachContent(string identity, string caption, string description) { Identity = identity; Summary = description; Caption = caption; } public AttachContent Write<T>(T value) { this.Payload = MessageSerializer.SerializeCompatible<T>(value); return this; } public T Read<T>() { if (this.Payload == null || this.Payload.Length == 0) return default(T); return MessageSerializer.DeserializeCompatible<T>(this.Payload); } #region IBinarySerializable public void Serialize(IBinaryWriter writer) { writer.WriteString(this.Identity); writer.WriteString(this.Caption); writer.WriteString(this.Summary); writer.WriteInt32((Int32)this.ContentType); writer.WriteBytes(this.Payload); } public void Deserialize(IBinaryReader reader) { this.Identity = reader.ReadString(); this.Caption = reader.ReadString(); this.Summary = reader.ReadString(); this.ContentType = (ContentType)reader.ReadInt32(); this.Payload = reader.ReadBytes(); } #endregion IBinarySerializable } }