private MemberDeclarationSyntax CreateMethod(VariableDeclarationSyntax node) { var invocationExpression = node.DescendantNodes().OfType <InvocationExpressionSyntax>().FirstOrDefault(); var methodName = invocationExpression.DescendantNodes().OfType <MemberAccessExpressionSyntax>().FirstOrDefault().GetLastToken().ValueText; var parameters = GetParametersTypesByArguments(invocationExpression.ArgumentList); var type = semanticModel.GetTypeInfo(node.DescendantNodes().OfType <IdentifierNameSyntax>().FirstOrDefault()); return(CodeElementFactory.CreareMethodDeclaration(CodeElementFactory.CreateType(type), methodName, parameters)); }
public override MemberDeclarationSyntax VisitInvocationExpression(InvocationExpressionSyntax node) { if (node.Expression == null) { return(null); } if (node.Expression.Kind() != SyntaxKind.SimpleMemberAccessExpression) { return(null); } var simpleMemberAccessExpression = node.Expression as MemberAccessExpressionSyntax; var left = simpleMemberAccessExpression.Expression as IdentifierNameSyntax; if (left == null || left.Identifier == null || left.Identifier.Text != localVaribleName) { return(null); } return(CodeElementFactory.CreareMethodDeclaration(CodeElementFactory.CreateType(SyntaxKind.VoidKeyword), simpleMemberAccessExpression.Name.Identifier.Text, GetParametersTypesByArguments(node.ArgumentList) )); }