本文整理汇总了C#中SyntaxGenerator.AddAttributes方法的典型用法代码示例。如果您正苦于以下问题:C# SyntaxGenerator.AddAttributes方法的具体用法?C# SyntaxGenerator.AddAttributes怎么用?C# SyntaxGenerator.AddAttributes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SyntaxGenerator
的用法示例。
在下文中一共展示了SyntaxGenerator.AddAttributes方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddNonSerializedAttribute
private Task<Document> AddNonSerializedAttribute(Document document, SemanticModel model, SyntaxNode root, SyntaxNode fieldNode, SyntaxGenerator generator)
{
var attr = generator.Attribute(generator.TypeExpression(WellKnownTypes.NonSerializedAttribute(model.Compilation)));
var newNode = generator.AddAttributes(fieldNode, attr);
var newDocument = document.WithSyntaxRoot(root.ReplaceNode(fieldNode, newNode));
return Task.FromResult(newDocument);
}
示例2: AddSerializableAttributeToType
private static async Task<Solution> AddSerializableAttributeToType(Document document, SemanticModel model, SyntaxGenerator generator, ITypeSymbol type, CancellationToken cancellationToken)
{
var typeDeclNode = type.DeclaringSyntaxReferences.First().GetSyntax(cancellationToken);
var serializableAttr = generator.Attribute(generator.TypeExpression(WellKnownTypes.SerializableAttribute(model.Compilation)));
var newTypeDeclNode = generator.AddAttributes(typeDeclNode, serializableAttr);
var documentContainingNode = document.Project.Solution.GetDocument(typeDeclNode.SyntaxTree);
var docRoot = await documentContainingNode.GetSyntaxRootAsync(cancellationToken);
var newDocumentContainingNode = documentContainingNode.WithSyntaxRoot(docRoot.ReplaceNode(typeDeclNode, newTypeDeclNode));
return newDocumentContainingNode.Project.Solution;
}
示例3: GetFix
private Task<Document> GetFix(Document document, SyntaxNode root, SyntaxNode classDecl, SyntaxGenerator generator, params string[] languages)
{
var languageNamesFullName = typeof(LanguageNames).FullName;
var arguments = new SyntaxNode[languages.Length];
for (int i = 0; i < languages.Length; i++)
{
var language = languages[i] == LanguageNames.CSharp ? nameof(LanguageNames.CSharp) : nameof(LanguageNames.VisualBasic);
var expressionToParse = languageNamesFullName + "." + language;
var parsedExpression = ParseExpression(expressionToParse);
arguments[i] = generator.AttributeArgument(parsedExpression);
}
SyntaxNode attribute = generator.Attribute(DiagnosticAnalyzerCorrectnessAnalyzer.DiagnosticAnalyzerAttributeFullName, arguments);
var newClassDecl = generator.AddAttributes(classDecl, attribute);
var newRoot = root.ReplaceNode(classDecl, newClassDecl);
return Task.FromResult(document.WithSyntaxRoot(newRoot));
}
示例4: GenerateProxyInterface
public InterfaceDeclarationSyntax GenerateProxyInterface(SemanticModel semanticModel, SyntaxGenerator generator, INamedTypeSymbol sourceServiceInterface, string targetInterfaceName, Accessibility accessibility = Accessibility.Public, bool inheritServiceInterface = false, bool suppressAsyncMethodGeneration = false, bool suppressWarningComments = false)
{
SyntaxNode targetInterface = generator.InterfaceDeclaration(targetInterfaceName, accessibility: accessibility);
targetInterface = generator.AddAttributes(targetInterface, sourceServiceInterface.GetAttributes().Select(attr => generator.Attribute(attr)));
foreach (SyntaxNode method in GetOperationContractMethodDeclarations(semanticModel, generator, sourceServiceInterface, true, !inheritServiceInterface, suppressAsyncMethodGeneration))
{
targetInterface = generator.AddMembers(targetInterface, generator.AddWarningCommentIf(!suppressWarningComments, method));
}
if (inheritServiceInterface)
{
targetInterface = generator.AddInterfaceType(targetInterface, generator.TypeExpression(sourceServiceInterface));
}
targetInterface = AddGeneratedCodeAttribute(generator, targetInterface);
targetInterface = generator.AddWarningCommentIf(!suppressWarningComments, targetInterface);
return (InterfaceDeclarationSyntax)targetInterface;
}
示例5: AddFlagsAttribute
private static SyntaxNode AddFlagsAttribute(SyntaxGenerator generator, SyntaxNode enumTypeSyntax, INamedTypeSymbol flagsAttributeType)
{
return generator.AddAttributes(enumTypeSyntax, generator.Attribute(generator.TypeExpression(flagsAttributeType)));
}
示例6: GenerateMock
private static SyntaxNode GenerateMock(
Language language,
SyntaxGenerator syntaxGenerator,
SemanticModel semanticModel,
INamedTypeSymbol interfaceSymbol,
string mockNamespace,
string mockName)
{
var namespaceSyntax = GetNamespaceDeclarationSyntax(syntaxGenerator, semanticModel, mockNamespace, language);
var classSyntax = GetClassDeclarationSyntax(syntaxGenerator, semanticModel, mockName, interfaceSymbol);
classSyntax = syntaxGenerator
.AddAttributes(classSyntax, GetClassAttributesSyntax(syntaxGenerator, semanticModel));
classSyntax = syntaxGenerator
.AddMembers(classSyntax, GetMemberDeclarations(syntaxGenerator, semanticModel, mockName, interfaceSymbol, language));
namespaceSyntax = syntaxGenerator
.AddMembers(namespaceSyntax, classSyntax);
return syntaxGenerator
.CompilationUnit(namespaceSyntax)
.NormalizeWhitespace();
}