/// <summary> /// Visits a <see cref="CodeNamespaceImportCollection"/>. /// </summary> /// <param name="codeNamespaceImportCollection">The <see cref="CodeNamespaceImportCollection"/> to visit.</param> protected override void VisitCodeNamespaceImportCollection(CodeNamespaceImportCollection codeNamespaceImportCollection) { CodeNamespaceImport[] sortedImports = codeNamespaceImportCollection.Cast <CodeNamespaceImport>().OrderBy(i => i.Namespace, new NamespaceImportComparer()).Distinct().ToArray(); codeNamespaceImportCollection.Clear(); codeNamespaceImportCollection.AddRange(sortedImports); base.VisitCodeNamespaceImportCollection(codeNamespaceImportCollection); }
/// <summary> /// Shortifies the specified type reference. /// </summary> /// <param name="typeReference">The type reference.</param> /// <param name="type">The type.</param> /// <param name="imports">The imports.</param> public static void Shortify(CodeTypeReference typeReference, Type type, CodeNamespaceImportCollection imports) { if (typeReference.ArrayRank > 0) { Shortify(typeReference.ArrayElementType, type, imports); return; } if (type.Namespace != null && imports.Cast <CodeNamespaceImport>() .Any(cni => cni.Namespace == type.Namespace)) { var prefix = type.Namespace + '.'; if (prefix != null) { var pos = typeReference.BaseType.IndexOf(prefix); if (pos == 0) { typeReference.BaseType = typeReference.BaseType.Substring(prefix.Length); } } } }