public static void ToBinaryFile(DataNode mainNode, string fileName, DataNodeBinary.BinaryFormat format = DataNodeBinary.BinaryFormat.Encrypted)
 {
     using (BinaryWriter binaryWriter = new BinaryWriter(File.Open(fileName, FileMode.Create)))
     {
         DataNodeBinary.ToBinaryStream(mainNode, binaryWriter, format);
     }
 }
 public static byte[] ToBinaryBytes(DataNode mainNode, DataNodeBinary.BinaryFormat format = DataNodeBinary.BinaryFormat.Encrypted)
 {
     byte[] result;
     using (MemoryStream memoryStream = new MemoryStream(65536))
     {
         using (BinaryWriter binaryWriter = new BinaryWriter(memoryStream))
         {
             DataNodeBinary.ToBinaryStream(mainNode, binaryWriter, format);
             result = memoryStream.ToArray();
         }
     }
     return(result);
 }
        public static void ToBinaryStream(DataNode mainNode, BinaryWriter writer, DataNodeBinary.BinaryFormat format)
        {
            writer.Write("DEF2");
            switch (format)
            {
            case DataNodeBinary.BinaryFormat.Simple:
                DataNodeBinary.WriteSimpleFormat(mainNode, writer);
                break;

            case DataNodeBinary.BinaryFormat.SimpleCompresssed:
                DataNodeBinary.WriteCompressedFormat(mainNode, writer);
                break;

            case DataNodeBinary.BinaryFormat.Encrypted:
                DataNodeBinary.WriteEncryptedFormat(mainNode, writer);
                break;

            default:
                throw new ArgumentOutOfRangeException("format");
            }
        }