private static CompilationUnitSyntax WithUsing(this CompilationUnitSyntax root, string name) { if (!root.Usings.Any(u => u.Name.ToString() == name)) { root = root.AddUsings(SyntaxFactory.UsingDirective(SyntaxFactory.ParseName(name)).WithAdditionalAnnotations(Formatter.Annotation)); } return root; }
internal static CompilationUnitSyntax AddUsings(this CompilationUnitSyntax compilationUnit, params string[] usings) { foreach (var @using in usings) { var needsUsing = !compilationUnit.ChildNodes().OfType<UsingDirectiveSyntax>().Any(u => u.Name.ToString().Equals(@using)); if (needsUsing) { var usingDirective = SyntaxFactory.UsingDirective(SyntaxFactory.ParseName(@using)); compilationUnit = compilationUnit.AddUsings(usingDirective).WithAdditionalAnnotations(Formatter.Annotation); } } return compilationUnit; }
public static NamespaceDeclarationSyntax AddUsings(this NamespaceDeclarationSyntax @this, params UsingDirectiveSyntax[] @usingsSyntax) { return @this.AddUsings(@usingsSyntax); }
/// <summary> /// Adds the string specified using statement to the CompilationUnitSyntax if that using is not already present. /// </summary> /// <remarks> /// The using statement, if inserted, will be followed by a CR/LF. /// </remarks> /// <param name="unit"> /// The type being extended. /// </param> /// <param name="usingString"> /// The string statement such as "System.Diagnostics" or "Microsoft.CodeAnalysis.CSharp.Syntax". /// </param> /// <returns> /// The CompilationUnitSyntax in <paramref name="unit"/>. /// </returns> public static CompilationUnitSyntax AddUsingIfNotPresent(this CompilationUnitSyntax unit, String usingString) { var t = unit.ChildNodes().OfType<UsingDirectiveSyntax>().Where(u => u.Name.ToString().Equals(usingString)); if (!t.Any()) { UsingDirectiveSyntax usingDirective = SyntaxFactoryHelper.QualifiedUsing(usingString); // I'll never understand why WithAdditionalAnnotations(Formatter.Annotation) isn't the default. Picking // up the default formatting should be the default and would make developing rules much easier. unit = unit.AddUsings(usingDirective).WithAdditionalAnnotations(Formatter.Annotation); } return unit; }