我正在尝试学习roslyn,我想将我方法中的所有空格更改为相同的长度。
例如我想改变这个:
private void Method()
{
int a=2;
int b=4;
int c;
if (b != 0)
{
c = (a / b);
}
}
对于这样的事情(我想忽略大括号):
private void Method()
{
int a=2;
int b=4;
int c;
if (b != 0)
{
c = (a / b);
}
}
我尝试了VisitBlock,然后更改了每个语句的leadingTrivia。
我在IEnumerable Inteface中有我的语句,我有新语句的列表
IEnumerable<StatementSyntax> statements = node.Statements.OfType<StatementSyntax>();
var newStatements = new SyntaxList<SyntaxNode>();
然后我正在创建新的空白琐事
接下来我在循环中创建新语句,最后我创建了新块。
foreach (var statement in statements)
{
StatementSyntax newStatement = statement.WithLeadingTrivia(newWhiteSpace);
newStatements = newStatements.Insert(newStatements.Count, newStatement);
}
var newBlock = SyntaxFactory.Block(newStatements)
node = node.ReplaceNode(node, newBlock);
这对我来说几乎没问题但是当我有大于1行的状态网时,只有第一行被改变。