예제 #1
0
        /// <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}");
        }
예제 #2
0
 private string GetIndexName(NamedReferenceTypeDescriptor refType)
 {
     return($"{_resolver.GetPrefix(refType)}.{refType.Name}");
 }
예제 #3
0
 /// <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}";