using System; using System.Collections.Generic; using System.Text; namespace Hcs.ClientNet.Internal { internal static class Util { /// /// Возвращает список все вложенных исключений для данного исключения /// internal static List EnumerateInnerExceptions(Exception e) { var list = new List(); WalkInnerExceptionsRecurse(e, list); return list; } private static void WalkInnerExceptionsRecurse(Exception e, List list) { if (e == null || list.Contains(e)) { return; } list.Add(e); WalkInnerExceptionsRecurse(e.InnerException, list); if (e is AggregateException) { var aggregate = e as AggregateException; foreach (var inner in aggregate.InnerExceptions) { WalkInnerExceptionsRecurse(inner, list); } } } internal static string FormatDate(DateTime date) { return date.ToString("yyyyMMdd"); } internal static string FormatDate(DateTime? date) { return (date == null) ? string.Empty : FormatDate((DateTime)date); } /// /// Преобразует массиб байтов в строку в формате binhex /// internal static string ConvertToHexString(byte[] ba) { var buf = new StringBuilder(ba.Length * 2); foreach (byte b in ba) { buf.AppendFormat("{0:x2}", b); } return buf.ToString(); } } }