private static IEnumerable <string> ToStringDumpInternal(XContainer toXElement) { foreach (XElement xelement in (IEnumerable <XElement>)toXElement.Elements().OrderBy <XElement, string>((Func <XElement, string>)(o => o.Name.ToString()))) { if (xelement.HasElements) { foreach (string str in ObjectExtensions.ToStringDumpInternal((XContainer)xelement)) { yield return("{" + string.Format("{0}={1}", (object)xelement.Name, (object)str) + "}"); } } else { yield return("{" + string.Format("{0}={1}", (object)xelement.Name, (object)xelement.Value) + "}"); } } }
public static string ToStringDump(this object o, BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, int maxArrayElements = 5) { return(ObjectExtensions.ToStringDumpInternal((XContainer)o.ToXElement(flags, maxArrayElements)).Aggregate <string, string>(string.Empty, (Func <string, string, string>)((str, el) => str + el))); }