/// <summary> /// formats a named reference type /// </summary> /// <param name="namedReferenceType"></param> /// <returns></returns> public override string FormatNamedReferenceType(NamedReferenceTypeDescriptor namedReferenceType) { // Create the type name appending the number of type arguments if there are duplicate names string typeName; if (NameCountIndex[GetIndexName(namedReferenceType)] > 1 && namedReferenceType.TypeArguments.Count > 0) { typeName = $"{namedReferenceType.Name}_{namedReferenceType.TypeArguments.Count}"; } else { typeName = namedReferenceType.Name; } // Append type arguments if (namedReferenceType.TypeArguments.Count > 0) { IEnumerable <string> typeArgs = namedReferenceType.TypeArguments.Select(csType => csType.FormatType(this)); typeName += $"<{string.Join(", ", typeArgs)}>"; } return($"{GetNamespaceWithDot(namedReferenceType)}{typeName}"); }
private string GetIndexName(NamedReferenceTypeDescriptor refType) { return($"{_resolver.GetPrefix(refType)}.{refType.Name}"); }
/// <summary> /// Formats a extracted referene type /// </summary> /// <param name="namedReferenceType"></param> /// <returns></returns> public abstract string FormatNamedReferenceType(NamedReferenceTypeDescriptor namedReferenceType);
private string GetIndexName(NamedReferenceTypeDescriptor refType) => $"{refType.Namespace}.{refType.Name}";