Mit gegebener Eingabe wie folgt ergänzt:Newline Entfernen vor ‚:‘ wenn Vererbung
namespace Test
{
using System;
public class Test
{
public int? OBJECTID { get; set; }
}
}
würde Ich mag diese Klasse machen andere Klassen erweitern. Also schrieb ich meine rewriter mit diesen Regeln:
public override SyntaxNode VisitClassDeclaration(ClassDeclarationSyntax node)
{
node =
node.WithBaseList(
SyntaxFactory.BaseList()
.WithTypes(
SyntaxFactory.SingletonSeparatedList<BaseTypeSyntax>(
SyntaxFactory.SimpleBaseType(SyntaxFactory.ParseName("Form"))
.WithLeadingTrivia(SyntaxFactory.Space) //Space before 'Form'
.WithTrailingTrivia(SyntaxFactory.LineFeed) // NewLine after 'Form'
)
)
);
return base.VisitClassDeclaration(node);
}
Aber der Ausgang ich wie folgt aussieht:
namespace Test
{
using System;
public class Test
: Form
{
public int? OBJECTID { get; set; }
}
}
I WithoutTrailingTrivia()
und WithoutLeadingTrivia()
in vielen verschiedenen Orten versucht, aber ich konnte nicht die reale finden Ort, um es einzufügen, Newline vor ":"
zu entfernen.
Können Sie mir bei diesem Problem helfen?
+1. Es ist manchmal nicht sehr intuitiv, zu welchem Token die Trivia gehört, aber wenn man ein wenig mit Roslyn arbeitet, ist das irgendwie offensichtlich. Immerhin war der Newline schon da, sie haben nur einen neuen hinzugefügt und jetzt sind sie überrascht, dass es zwei gibt :-) – Joey
Ich habe solche Tools nicht benutzt, und es ist schwieriger mit regulären Debugging-Tools zu finden. 'Identifier' hat keine' WithoutTrailingTrivia() 'und' WithoutLeadingTrivia() 'Methoden, so dass mich das auch abschreckt. – Wish