本文整理汇总了C#中Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax.RequiresBoundTreeGeneration方法的典型用法代码示例。如果您正苦于以下问题:C# MethodDeclarationSyntax.RequiresBoundTreeGeneration方法的具体用法?C# MethodDeclarationSyntax.RequiresBoundTreeGeneration怎么用?C# MethodDeclarationSyntax.RequiresBoundTreeGeneration使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax
的用法示例。
在下文中一共展示了MethodDeclarationSyntax.RequiresBoundTreeGeneration方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: VisitMethodDeclaration
/// <summary>
/// Normalizes the <paramref name="methodDeclaration" />.
/// </summary>
/// <param name="methodDeclaration">The method declaration that should be normalized.</param>
public override SyntaxNode VisitMethodDeclaration(MethodDeclarationSyntax methodDeclaration)
{
if (!methodDeclaration.RequiresBoundTreeGeneration(SemanticModel))
return methodDeclaration;
var methodSymbol = methodDeclaration.GetMethodSymbol(SemanticModel);
var methodBody = _implementationMethods[GetMethodKey(methodSymbol)];
var metadataMethodName = (methodDeclaration.Identifier.ValueText + "MethodBody" + _methodCount++).ToSynthesized();
var metadataMethod = Syntax.MethodDeclaration(
name: metadataMethodName,
returnType: Syntax.TypeExpression(Compilation.GetTypeSymbol<MethodBodyMetadata>()),
accessibility: Accessibility.Private,
statements: methodBody.Statements);
var suppressAttribute = Syntax.Attribute(typeof(SuppressTransformationAttribute).FullName);
var compilerGeneratedAttribute = Syntax.Attribute(typeof(CompilerGeneratedAttribute).FullName);
metadataMethod = Syntax.AddAttributes(metadataMethod, suppressAttribute, compilerGeneratedAttribute);
AddMembers(methodSymbol.ContainingType, (MethodDeclarationSyntax)metadataMethod);
var metadataAttribute = Syntax.Attribute(typeof(MethodBodyMetadataAttribute).FullName, Syntax.LiteralExpression(metadataMethodName));
return Syntax.AddAttributes(methodDeclaration, metadataAttribute);
}