public override void VisitAttribute(AttributeSyntax node) { if (this.semanticModel.TryGetNamedType(node, KnownSymbols.XmlnsDefinitionAttribute, this.cancellationToken, out _)) { if (node.TryFindArgument(1, KnownSymbols.XmlnsDefinitionAttribute.ClrNamespaceArgumentName, out var arg)) { if (this.semanticModel.TryGetConstantValue <string>(arg.Expression, this.cancellationToken, out var @namespace)) { this.mappedNamespaces.Add(@namespace); } } } }
private static AttributeListSyntax CreateAttribute(string @namespace, AttributeSyntax attribute) { var list = attribute.FirstAncestorOrSelf <AttributeListSyntax>(); if (list?.Attributes.Count != 1) { return(null); } if (!attribute.TryFindArgument(1, KnownSymbols.XmlnsDefinitionAttribute.ClrNamespaceArgumentName, out AttributeArgumentSyntax oldArgument)) { return(null); } var newArgument = oldArgument.WithExpression(SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression, SyntaxFactory.Literal(@namespace))); return(list.WithAttributes(SyntaxFactory.SingletonSeparatedList(attribute.ReplaceNode(oldArgument, newArgument))).WithAdditionalAnnotations(Formatter.Annotation)); }