在.net中,是否有办法检测单词是否是给定.net语言中的关键字?
我正在为这个项目使用一个相当简单的代码生成器,我想开始自动化它。现在我手工完成每一个,所以解决出现的任何问题都很容易。但是,一旦这种情况自动开始,我将需要一种方法来检测我需要用作标识符的单词是否是关键字。我仍然可以使用它,我只需要正确引用它。
我知道我可以简单地引用我生成的所有,但我想保持生成的代码很漂亮:)
我需要引用的一类例子:
vb: Public [Class] As String = "CLASS"
c#: public String @class = "CLASS";
答案 0 :(得分:7)
也许您正在寻找IsValidIdentifier
[
IsValidIdentifier
]返回[s]为真 只有当价值符合规则时 语言和不冲突 使用关键字。
CreateEscapedIdentifier
测试是否 标识符与any冲突 保留或语言关键字,如果 所以,返回一个等效的名称 语言特定的转义码 格式化
例如:
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)
似乎扩展/使用此设施以满足您的需求并不会太难。
答案 1 :(得分:3)
See here。男人,Jon Skeet无处不在!
答案 2 :(得分:2)
CodeDOM是否已经解决了这个问题?您可以通过这种方式构建生成的代码,并自动获得对支持CodeDOM的任何语言的支持。
答案 3 :(得分:1)