是否可以在SyntaxTree中调节节点的兄弟节点?
在以下示例中,如何获取节点列表(橙色圆圈),这些节点是标记为橙色箭头的节点的兄弟节点?
If dayW = DayOfWeek.Wednesday Then
答案 0 :(得分:1)
如果语句节点 MultiLineIfStatement 的父级提供详细信息如果和结束时语句以及< strong> MultiLineIfStatement.ElseIfBlocks 提供有关 Else 和 ElseIf 语句的信息。
这是我的 VisitIfStatement methed:
public override void VisitIfStatement(IfStatementSyntax node)
{
base.VisitIfStatement(node);
var Block = node.Parent as MultiLineIfBlockSyntax;
Location Location = Block.GetLocation();
FileLinePositionSpan LinePosition = Location.GetLineSpan();
int Level = IndentLevel(Block);
// Process If and EndIf staments Details here
// Get the list of ElseIf blocks and Else Block
SyntaxList<ElseIfBlockSyntax> ElseIfBlocks = Block.ElseIfBlocks;
ElseBlockSyntax ElseBlock = Block.ElseBlock;
/ Process ElseIf blocks
for (int i = 0; i <= ElseIfBlocks.Count - 1; i++)
{
ElseIfBlockSyntax ElseIfBlock = ElseIfBlocks[i];
Location = ElseIfBlock.GetLocation();
LinePosition = Location.GetLineSpan();
// **Process ElseIf statements here**
}
if (ElseBlock != null)
{
Location = ElseBlock.GetLocation();
LinePosition = Location.GetLineSpan();
// **Process ElseBlock Details here**
}
}