Hi,
I want to replace a string with method call. For example,
string s="Hello World";
with
string s =this.GetHelloWorld();
I have created an ExpressionStatementSyntax with the method call in SymbolNode 'newNode'. Now I have the reference to LiteralExpressionSytax "Hello World" in oldNode.
When I try to replace the code using
tree.GetRoot().ReplaceNode(oldNode, newNode), I get the following exception
System.InvalidCastException was unhandledHResult=-2147467262
Message=Unable to cast object of type 'Roslyn.Compilers.CSharp.ExpressionStatementSyntax' to type 'Roslyn.Compilers.CSharp.ExpressionSyntax'.
Source=Roslyn.Compilers.CSharp
StackTrace:
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitEqualsValueClause(EqualsValueClauseSyntax node)
at Roslyn.Compilers.CSharp.EqualsValueClauseSyntax.Accept[TResult](SyntaxVisitor`1 visitor)
at Roslyn.Compilers.CSharp.SyntaxVisitor`1.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxNodeReplacer.SingleNodeReplacer.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitVariableDeclarator(VariableDeclaratorSyntax node)
at Roslyn.Compilers.CSharp.VariableDeclaratorSyntax.Accept[TResult](SyntaxVisitor`1 visitor)
at Roslyn.Compilers.CSharp.SyntaxVisitor`1.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxNodeReplacer.SingleNodeReplacer.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitListElement[TNode](TNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitList[TNode](SeparatedSyntaxList`1 list)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitVariableDeclaration(VariableDeclarationSyntax node)
at Roslyn.Compilers.CSharp.VariableDeclarationSyntax.Accept[TResult](SyntaxVisitor`1 visitor)
at Roslyn.Compilers.CSharp.SyntaxVisitor`1.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxNodeReplacer.SingleNodeReplacer.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitLocalDeclarationStatement(LocalDeclarationStatementSyntax node)
at Roslyn.Compilers.CSharp.LocalDeclarationStatementSyntax.Accept[TResult](SyntaxVisitor`1 visitor)
at Roslyn.Compilers.CSharp.SyntaxVisitor`1.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxNodeReplacer.SingleNodeReplacer.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitListElement[TNode](TNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitList[TNode](SyntaxList`1 list)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitBlock(BlockSyntax node)
at Roslyn.Compilers.CSharp.BlockSyntax.Accept[TResult](SyntaxVisitor`1 visitor)
at Roslyn.Compilers.CSharp.SyntaxVisitor`1.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxNodeReplacer.SingleNodeReplacer.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitMethodDeclaration(MethodDeclarationSyntax node)
at Roslyn.Compilers.CSharp.MethodDeclarationSyntax.Accept[TResult](SyntaxVisitor`1 visitor)
at Roslyn.Compilers.CSharp.SyntaxVisitor`1.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxNodeReplacer.SingleNodeReplacer.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitListElement[TNode](TNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitList[TNode](SyntaxList`1 list)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitClassDeclaration(ClassDeclarationSyntax node)
at Roslyn.Compilers.CSharp.ClassDeclarationSyntax.Accept[TResult](SyntaxVisitor`1 visitor)
at Roslyn.Compilers.CSharp.SyntaxVisitor`1.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxNodeReplacer.SingleNodeReplacer.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitListElement[TNode](TNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitList[TNode](SyntaxList`1 list)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitNamespaceDeclaration(NamespaceDeclarationSyntax node)
at Roslyn.Compilers.CSharp.NamespaceDeclarationSyntax.Accept[TResult](SyntaxVisitor`1 visitor)
at Roslyn.Compilers.CSharp.SyntaxVisitor`1.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxNodeReplacer.SingleNodeReplacer.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitListElement[TNode](TNode node)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitList[TNode](SyntaxList`1 list)
at Roslyn.Compilers.CSharp.SyntaxRewriter.VisitCompilationUnit(CompilationUnitSyntax node)
at Roslyn.Compilers.CSharp.CompilationUnitSyntax.Accept[TResult](SyntaxVisitor`1 visitor)
at Roslyn.Compilers.CSharp.SyntaxVisitor`1.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxNodeReplacer.SingleNodeReplacer.Visit(SyntaxNode node)
at Roslyn.Compilers.CSharp.SyntaxNodeReplacer.Replace[TRoot,TNode](TRoot root, TNode oldNode, TNode newNode)
at Roslyn.Compilers.CSharp.SyntaxNode.ReplaceNodeCore(CommonSyntaxNode oldNode, CommonSyntaxNode newNode)
at Roslyn.Compilers.CommonSyntaxNodeExtensions.ReplaceNode[TRoot,TNode](TRoot root, TNode oldNode, TNode newNode)
at GDGlobalizationApp.Program.Main(String[] args) in c:\Users\prathulp\Documents\Visual Studio 2012\Projects\GDGlobalizationApp\GDGlobalizationApp\Program.cs:line 27
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException: