using System; using System.Collections; using System.Linq; namespace ScreenConnect; public class ActivityTracerFormatter { public virtual string? FormatObject(object? value) { if (value != null) { if (!(value is string result)) { if (!(value is DateTime dateTime)) { if (!(value is byte[] inArray)) { IDictionary dictionary = value as IDictionary; if (dictionary == null) { if (value is IEnumerable source) { return "[" + source.Cast().Select(FormatObject).Join(", ") + "]"; } return value.ToString(); } return "{" + (from object key in dictionary.Keys select FormatObject(key) + ": " + FormatObject(dictionary[key])).Join(", ") + "}"; } return Convert.ToBase64String(inArray); } return dateTime.ToUniversalTime().ToString("o"); } return result; } return null; } }