ArchiMetrics.Analysis.Metrics.TypeExtensions.GetQualifiedName C# (CSharp) Method

GetQualifiedName() public static method

public static GetQualifiedName ( this symbol ) : ITypeDefinition
symbol this
return ITypeDefinition
		public static ITypeDefinition GetQualifiedName(this ITypeSymbol symbol)
		{
			var name = string.Join(".", GetContainingTypeName(symbol).Reverse());

			var namedTypeSymbol = symbol as INamedTypeSymbol;
			if (namedTypeSymbol != null && namedTypeSymbol.TypeParameters != null && namedTypeSymbol.TypeParameters.Any())
			{
				var joined = string.Join(", ", namedTypeSymbol.TypeParameters.Select(x => x.Name));
				name = name + string.Format("<{0}>", joined);
			}

			var namespaceNames = new List<string>();
			for (var containingSymbol = symbol.ContainingSymbol; (containingSymbol != null) && (containingSymbol.Kind == SymbolKind.Namespace); containingSymbol = containingSymbol.ContainingSymbol)
			{
				var namespaceSymbol = (INamespaceSymbol)containingSymbol;
				if (namespaceSymbol.IsGlobalNamespace)
				{
					return new TypeDefinition(name, string.Join(".", namespaceNames), namespaceSymbol.ContainingAssembly.Name);
				}

				namespaceNames.Add(namespaceSymbol.Name);
			}

			return new TypeDefinition(name, string.Join(".", namespaceNames), string.Empty);
		}