public static byte[] Format(object[] format, object[] args) { MemoryStream stream1; int num1 = 0; using (MemoryStream stream2 = (stream1 = new MemoryStream())) { using (BinaryWriter writer1 = new BinaryWriter(stream1, new UnicodeEncoding())) { XLSDescriptors.FormatHelper(writer1, format, args, ref num1); stream1.Capacity = (int)stream1.Length; } } return(stream1.GetBuffer()); }
private static void FormatHelper(BinaryWriter bw, object[] format, object[] args, ref int currentArgIndex) { object[] objArray2 = format; for (int num2 = 0; num2 < objArray2.Length; num2++) { object obj1 = objArray2[num2]; if (obj1 is string) { bw.Write(Utilities.HexStr2ByteArr((string)obj1)); } else if (obj1 is Type) { object obj2 = args[currentArgIndex]; Type type1 = (Type)obj1; if (type1.IsEnum) { type1 = Enum.GetUnderlyingType(type1); } switch (type1.FullName) { case "System.Int16": { bw.Write((short)obj2); break; } case "System.UInt16": { bw.Write((ushort)obj2); break; } case "System.UInt32": { bw.Write(UInt32.Parse(obj2.ToString())); break; } case "System.UInt64": { bw.Write((ulong)obj2); break; } case "System.Byte": { bw.Write((byte)obj2); break; } case "System.Char": { bw.Write((char)obj2); break; } case "System.Single": { bw.Write((float)obj2); break; } case "System.Double": { bw.Write((double)obj2); break; } case "MB.WinEIDrive.Excel.ExcelShortString": { ((ExcelShortString)obj2).Write(bw); break; } case "MB.WinEIDrive.Excel.ExcelLongString": { ((ExcelLongString)obj2).Write(bw); break; } case "MB.WinEIDrive.Excel.ExcelStringWithoutLength": { ((ExcelStringWithoutLength)obj2).Write(bw); break; } case "MB.WinEIDrive.Excel.ExcelLongStrings": { ((ExcelLongStrings)obj2).Write(bw); break; } case "MB.WinEIDrive.Excel.CellRecordHeader": { ((CellRecordHeader)obj2).Write(bw); break; } case "MB.WinEIDrive.Excel.SheetIndexes": { ((SheetIndexes)obj2).Write(bw); break; } default: { throw new Exception("Internal error: unsupported type in format."); } } currentArgIndex += 1; } else { if (!(obj1 is object[])) { throw new Exception("Internal error: wrong format in descriptor."); } object[] objArray1 = args[currentArgIndex] as object[]; int num1 = 0; while (num1 < objArray1.Length) { XLSDescriptors.FormatHelper(bw, (object[])obj1, objArray1, ref num1); } currentArgIndex += 1; } } }