private StringBuilder AppendComplexTypeName(StringBuilder builder, Type type, ObjectFormattingOptions options) { if (type.IsArray) { builder.Append(FormatArrayTypeName(type, arrayOpt: null, options: options)); return(builder); } // compiler generated (e.g. iterator) if (GeneratedNames.IsGeneratedName(type.Name)) { string iteratorName; if (GeneratedNames.TryParseIteratorName(type.Name, out iteratorName) && typeof(IEnumerable).IsAssignableFrom(type)) { builder.Append(iteratorName); return(builder); } } if (type.IsGenericType) { // consolidated generic arguments (includes arguments of all declaring types): Type[] genericArguments = type.GetGenericArguments(); if (type.DeclaringType != null) { List <Type> nestedTypes = new List <Type>(); do { nestedTypes.Add(type); type = type.DeclaringType; }while (type != null); int typeArgumentIndex = 0; for (int i = nestedTypes.Count - 1; i >= 0; i--) { AppendTypeInstantiation(builder, nestedTypes[i], genericArguments, ref typeArgumentIndex, options); if (i > 0) { builder.Append('.'); } } } else { int typeArgumentIndex = 0; return(AppendTypeInstantiation(builder, type, genericArguments, ref typeArgumentIndex, options)); } } else if (type.DeclaringType != null) { builder.Append(type.Name.Replace('+', '.')); } else { builder.Append(type.Name); } return(builder); }
public override bool IsHiddenMember(System.Reflection.MemberInfo member) { // Generated fields, e.g. "<property_name>k__BackingField" return(GeneratedNames.IsGeneratedName(member.Name)); }