public static Post TryGetFromBinary(byte[] data)
{
using (var mem = new MemoryStream(data))
using (var bin = new BinaryReader(mem))
{
if (bin.ReadInt32() != Signature)
return null;
var post = new Post
{
Id = bin.ReadInt64(),
PostTypeId = bin.ReadInt64(),
CreationDate = DateTime.FromBinary(bin.ReadInt64()),
ViewCount = bin.ReadInt64(),
Body = bin.ReadString(),
OwnerUserId = bin.ReadInt64(),
LastEditDate = DateTime.FromBinary(bin.ReadInt64()),
Title = bin.ReadString(),
AnswerCount = bin.ReadInt64(),
CommentCount = bin.ReadInt64(),
FavoriteCount = bin.ReadInt64()
};
var tags = new List<string>();
var tagCount = bin.ReadInt32();
for (var i = 0; i < tagCount; i++)
{
tags.Add(bin.ReadString());
}
post.Tags = tags.ToArray();
return post;
}
}