NET - Erkennen, wenn gewünscht Kennung ein Schlüsselwort
-
03-07-2019 - |
Frage
Gibt es eine Möglichkeit, in .net, zu erkennen, ob ein Wort ein Schlüsselwort in einer bestimmten .net Sprache ist?
Ich verwende einen ziemlich einfachen Code-Generator für dieses Projekt, und ich würde es anfangen möge zu automatisieren. Im Moment kann ich jeder von Hand, so dass alle Probleme beheben, die auftreten, ist recht einfach. Sobald jedoch beginnt geschieht dies automatisch zu erkennen Ich werde einen Weg brauchen, wenn ein Wort, das ich brauche als Bezeichner verwenden ein Schlüsselwort ist. Ich kann es immer noch verwenden, ich brauche nur um es richtig zu zitieren.
Ich weiß, dass ich kann einfach Zitat alles ich generieren, aber ich möchte den generierten Code halten ziemlich :)
Ein Beispiel für die Art von Dingen, die ich brauche zu zitieren:
vb: Public [Class] As String = "CLASS"
c#: public String @class = "CLASS";
Lösung
Vielleicht sind Sie für IsValidIdentifier
[
IsValidIdentifier
] return [s] wahr nur dann, wenn der Wert paßt die Regeln die Sprache und nicht Konflikt mit einem Schlüsselwort .
CreateEscapedIdentifier
Tests , ob die Kennung Konflikte mit irgend reserviert oder Sprache keywords , und wenn so, gibt eine äquivalente Bezeichnung mit sprachspezifischen Escape-Code Formatierung
Zum Beispiel:
CSharpCodeProvider csProvider = new CSharpCodeProvider();
bool isValid1 = csProvider.IsValidIdentifier("class");
// returns false
string escapedId1 = csProvider.CreateEscapedIdentifier("foo");
// escapedId1 = "foo"
string escapedId2 = csProvider.CreateEscapedIdentifier("do");
// escapedId2 = "@do"
string escapedId3 = csProvider.CreateEscapedIdentifier("AndAlso");
// escapedId3 = "AndAlso" (not reserved in c#)
VBCodeProvider vbProvider = new VBCodeProvider();
string escapedId4 = vbProvider.CreateEscapedIdentifier("AndAlso");
// escapedId4 = "[AndAlso]" (reserved in VB)
Scheint, wie es nicht allzu schwierig sein würde, diese Anlage zu erweitern / benutzen, um Ihre Bedürfnisse zu erfüllen.