public bool Append(CommonObjectFormatter.Builder result, string separator) { result.Append(this.GetDisplayName(), 0, int.MaxValue); result.Append(separator, 0, int.MaxValue); result.Append(this.Value, 0, int.MaxValue); return(true); }
private void ObjectToString(CommonObjectFormatter.Builder result, object obj) { try { string str = obj.ToString(); result.Append('['); result.Append(str, 0, int.MaxValue); result.Append(']'); } catch (Exception ex) { this.FormatException(result, ex); } }
private void FormatDictionaryMembers( CommonObjectFormatter.Builder result, IDictionary dict) { result.AppendGroupOpening(); int num = 0; try { IDictionaryEnumerator enumerator = dict.GetEnumerator(); using (enumerator as IDisposable) { while (enumerator.MoveNext()) { DictionaryEntry entry = enumerator.Entry; result.AppendCollectionItemSeparator(num == 0); result.AppendGroupOpening(); result.AppendCollectionItemSeparator(true); this.FormatObjectRecursive(result, entry.Key, false); result.AppendCollectionItemSeparator(false); this.FormatObjectRecursive(result, entry.Value, false); result.AppendGroupClosing(); ++num; } } } catch (Exception ex) { result.AppendCollectionItemSeparator(num == 0); this.FormatException(result, ex); result.Append(' '); } result.AppendGroupClosing(); }
private void FormatMembers( CommonObjectFormatter.Builder result, object obj) { RuntimeHelpers.EnsureSufficientExecutionStack(); result.Append(' '); if (!this.VisitedObjects.Add(obj)) { result.AppendInfiniteRecursionMarker(); } else { bool flag = false; if (obj is IDictionary dict) { this.FormatDictionaryMembers(result, dict); flag = true; } else if (obj is IEnumerable sequence) { this.FormatSequenceMembers(result, sequence); flag = true; } if (!flag) { this.FormatObjectMembers(result, obj); } this.VisitedObjects.Remove(obj); } }
public bool AppendAsCollectionEntry(CommonObjectFormatter.Builder result) { if (this.HasKeyName()) { result.AppendGroupOpening(); result.AppendCollectionItemSeparator(true); result.Append(this.Name, 1, this.Name.Length - 2); result.AppendCollectionItemSeparator(false); result.Append(this.Value, 0, int.MaxValue); result.AppendGroupClosing(); } else { result.Append(this.Value, 0, int.MaxValue); } return(true); }
private void FormatArray(CommonObjectFormatter.Builder result, Array array) { this.FormatCollectionHeader(result, array); if (array.Rank > 1) { this.FormatMultidimensionalArrayElements(result, array); } else { result.Append(' '); this.FormatSequenceMembers(result, array); } }
private void FormatCollectionHeader( CommonObjectFormatter.Builder result, ICollection collection) { if (collection is Array arrayOpt) { result.Append(this._formatter.TypeNameFormatter.FormatArrayTypeName(arrayOpt.GetType(), arrayOpt), 0, int.MaxValue); } else { result.Append(this._formatter.TypeNameFormatter.FormatTypeName(collection.GetType()), 0, int.MaxValue); try { result.Append('('); result.Append(collection.Count.ToString(), 0, int.MaxValue); result.Append(')'); } catch (Exception ex) { } } }
private void FormatSequenceMembers( CommonObjectFormatter.Builder result, IEnumerable sequence) { result.AppendGroupOpening(); int num = 0; try { foreach (object obj in sequence) { result.AppendCollectionItemSeparator(num == 0); this.FormatObjectRecursive(result, obj, false); ++num; } } catch (Exception ex) { result.AppendCollectionItemSeparator(num == 0); this.FormatException(result, ex); result.Append(" ...", 0, int.MaxValue); } result.AppendGroupClosing(); }
private void FormatException(CommonObjectFormatter.Builder result, Exception exception) { result.Append("!<", 0, int.MaxValue); result.Append(this._formatter.TypeNameFormatter.FormatTypeName(((object)exception).GetType()), 0, int.MaxValue); result.Append('>'); }
private CommonObjectFormatter.Builder FormatObjectRecursive( CommonObjectFormatter.Builder result, object obj, bool isRoot) { string str = this._formatter.PrimitiveFormatter.FormatPrimitive(obj, this._primitiveOptions); if (str != null) { result.Append(str, 0, int.MaxValue); return(result); } Type type = obj.GetType(); System.Reflection.TypeInfo typeInfo = IntrospectionExtensions.GetTypeInfo(type); if (typeInfo.IsGenericType && typeInfo.GetGenericTypeDefinition() == (object)typeof(KeyValuePair <,>)) { if (isRoot) { result.Append(this._formatter.TypeNameFormatter.FormatTypeName(type), 0, int.MaxValue); result.Append(' '); } this.FormatKeyValuePair(result, obj); return(result); } if (typeInfo.IsArray) { if (this.VisitedObjects.Add(obj)) { this.FormatArray(result, (Array)obj); this.VisitedObjects.Remove(obj); } else { result.AppendInfiniteRecursionMarker(); } return(result); } bool flag = false; ICollection collection = null; if (obj is ICollection) { collection = (ICollection)obj; this.FormatCollectionHeader(result, collection); } else if (ObjectFormatterHelpers.HasOverriddenToString(typeInfo)) { this.ObjectToString(result, obj); flag = true; } else { result.Append(this._formatter.TypeNameFormatter.FormatTypeName(type), 0, int.MaxValue); } if (!flag) { this.FormatMembers(result, obj); } return(result); }