es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obteniendo modificadores desde un MethodSymbol.

¿Cómo puedo obtener los modificadores de un método particular en una clase? Soy capaz de obtener el IMethodSymbol pero no puedo encontrar ninguna propiedad que se refiera a los modificadores. Necesito saber si la accesibilidad del método es mayor que private.

La clase en sí está declarada en la solución y mi punto de partida en el analizador es un SyntaxNodeAnalysisContext.Node de tipo MemberAccessExpressionSyntax (SyntaxKind.SimpleMemberAccessExpression).

Estaba pensando en utilizar SyntaxGenerator pero desde el SyntaxNodeAnalysisContext no sé cómo recorrer a un Document o solución/espacio de trabajo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener los modificadores de un método en particular de una clase usando IMethodSymbol, se puede usar el método GetMethodDeclaration para obtener el nodo de sintaxis que declara el método y luego usar la propiedad Modifiers del nodo para obtener los modificadores de acceso.

    Aquí está un ejemplo de código:

    // Suponga que methodSymbol es el IMethodSymbol del método que desea analizar
    SyntaxNode methodDeclaration = methodSymbol.GetMethodDeclaration();
    SyntaxTokenList modifiers = ((MethodDeclarationSyntax)methodDeclaration).Modifiers;
    
    bool isPublic = modifiers.Any(SyntaxKind.PublicKeyword);
    bool isProtected = modifiers.Any(SyntaxKind.ProtectedKeyword);
    bool isInternal = modifiers.Any(SyntaxKind.InternalKeyword);
    bool isPrivate = modifiers.Any(SyntaxKind.PrivateKeyword);
    
    if (isPublic || isProtected || isInternal)
    {
        // El método es accesible para otras clases
    }
    

    Tenga en cuenta que SyntaxGenerator no es necesario en este caso. Además, el SyntaxNodeAnalysisContext no proporciona acceso directo a Document o solución/espacio de trabajo, pero se puede usar la propiedad SemanticModel del contexto para obtener la información del símbolo del código analizado.

Comments are closed.