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";
War es hilfreich?

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 .

oder CreateEscapedIdentifier

  

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.

Andere Tipps

hier . Mann, Jon Skeet ist überall!

CodeDOM bereits kümmert das? Sie könnten Ihren generierten Code auf diese Weise bauen und automatisch Unterstützung für jede Sprache erhalten, die CodeDOM unterstützt.

Ich glaube nicht, dass es irgendeine natürliche Art und Weise dies programmatisch zu tun, aber Sie können eine vollständige Liste von Schlüsselwörtern für C # hier und für VB.Net hier .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top