我正在编写一个 VSPackage,它需要根据测试更改一个类以返回正确的值。简单地更改返回值很容易,但现在我尝试添加一个 if-else 语句,以便该类根据输入返回不同的值:
var node = new IfElseStatement
{
Condition = new BinaryOperatorExpression
{
Left = new IdentifierExpression("parameterName"),
Operator = BinaryOperatorType.Equality,
Right = new PrimitiveExpression(3)
},
TrueStatement = new ReturnStatement
{
Expression = new PrimitiveExpression(9)
}
};
//Visitor finds the beginnning of the method (first child is '{' so insert after that)
var parentNodeToInsert = _abstractSyntaxTree.AcceptVisitor(new FindBeginningOfMethodVisitor());
parentNodeToInsert.InsertChildAfter(parentNodeToInsert.FirstChild, node, new Role<IfElseStatement>("Statement"));
如果我在此之后放置断点并检查parentNodeToInsert
:
在parentNodeToInsert
(蓝色框)的子节点下它已正确添加,但是节点的摘要(红色框)不包含新的 if 语句,稍后如果我调用toString()
语法树(将其写回文件)它也没有出现。
有谁知道为什么,以及如何让它出现?