|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
}
|