Exemplo n.º 1
0
        public static BlockSyntax FindBody(MemberNode node)
        {
            Func <SyntaxNode, BlockSyntax> func;
            Dictionary <MemberKind, Func <SyntaxNode, BlockSyntax> > memberKinds = new Dictionary <MemberKind, Func <SyntaxNode, BlockSyntax> >()
            {
                { MemberKind.Method, new Func <SyntaxNode, BlockSyntax>((SyntaxNode x) => ((MethodDeclarationSyntax)x).Body) },
                { MemberKind.Constructor, new Func <SyntaxNode, BlockSyntax>((SyntaxNode x) => ((ConstructorDeclarationSyntax)x).Body) },
                { MemberKind.Destructor, new Func <SyntaxNode, BlockSyntax>((SyntaxNode x) => ((DestructorDeclarationSyntax)x).Body) },
                { MemberKind.GetProperty, new Func <SyntaxNode, BlockSyntax>((SyntaxNode x) => MemberBodySelector.GetPropertyAccessorBody((PropertyDeclarationSyntax)x, SyntaxKind.GetAccessorDeclaration)) },
                { MemberKind.SetProperty, new Func <SyntaxNode, BlockSyntax>((SyntaxNode x) => MemberBodySelector.GetPropertyAccessorBody((PropertyDeclarationSyntax)x, SyntaxKind.SetAccessorDeclaration)) },
                { MemberKind.AddEventHandler, new Func <SyntaxNode, BlockSyntax>((SyntaxNode x) => MemberBodySelector.GetEventAccessorBody((EventDeclarationSyntax)x, SyntaxKind.AddAccessorDeclaration)) },
                { MemberKind.RemoveEventHandler, new Func <SyntaxNode, BlockSyntax>((SyntaxNode x) => MemberBodySelector.GetEventAccessorBody((EventDeclarationSyntax)x, SyntaxKind.RemoveAccessorDeclaration)) }
            };

            if (memberKinds.TryGetValue(node.Kind, out func))
            {
                BlockSyntax syntaxNode  = func(node.SyntaxNode);
                BlockSyntax blockSyntax = syntaxNode;
                if (syntaxNode != null)
                {
                    return(blockSyntax);
                }
            }
            return(null);
        }