public override byte[] Serialize()
{
List<byte> listByte = new List<byte>();
listByte.AddRange(BitConverter.GetBytes(this.Reserved));
listByte.AddRange(BitConverter.GetBytes(this.HasState));
if (this.HasState)
{
listByte.AddRange(this.State.Serialize());
}
listByte.AddRange(BitConverter.GetBytes(this.HasPropertyTags));
if (this.HasPropertyTags)
{
listByte.AddRange(BitConverter.GetBytes(this.PropertyTags.PropertyTagCount));
for (int i = 0; i < this.PropertyTags.PropertyTagCount; i++)
{
listByte.AddRange(this.PropertyTags.PropertyTags[i].Serialize());
}
}
listByte.AddRange(BitConverter.GetBytes(this.HasNames));
if (this.HasNames)
{
listByte.AddRange(BitConverter.GetBytes(this.Names.CValues));
for (int i = 0; i < this.Names.CValues; i++)
{
StringBuilder nameStringBuilder = new StringBuilder(this.Names.LppszW[i]);
nameStringBuilder.Append("\0\0");
listByte.AddRange(
System.Text.Encoding.Unicode.GetBytes(nameStringBuilder.ToString()));
}
}
listByte.AddRange(BitConverter.GetBytes(this.AuxiliaryBufferSize));
listByte.AddRange(this.AuxiliaryBuffer);
return listByte.ToArray();
}
}