是否有.NET函数来验证类名?

Zac*_*ach 22 .net c# validation naming class

我正在使用CodeDom根据用户值生成动态代码.其中一个值控制着我正在生成的类的名称.我知道我可以使用正则表达式根据有关有效类名的语言规则对名称进行消毒,但我想知道框架中是否有一个特定的方法来验证和/或消毒类名.

Mic*_*cah 26

确定字符串是否是类或变量的有效标识符的简单方法是调用静态方法

System.CodeDom.Compiler.CodeGenerator.IsValidLanguageIndependentIdentifier(string value)
Run Code Online (Sandbox Code Playgroud)


Jas*_*ler 8

CreateValidIdentifierCSharpCodeProvider课堂上使用该方法.

CSharpCodeProvider codeProvider = new CSharpCodeProvider(); 
string sFixedName = codeProvider.CreateValidIdentifier("somePossiblyInvalidName"); 
CodeTypeDeclaration codeType = new CodeTypeDeclaration(sFixedName); 
Run Code Online (Sandbox Code Playgroud)

它给出了一些输入的有效名称.如果您只想验证名称而不修复它,请比较输入和输出.它不会改变有效输入,因此输出将是等效的.

  • 如果标识符与保留字冲突,则所有这一切都是重命名标识符.如果传入的值中包含无效字符,则不会创建有效的标识符.所以这很有用,但不是在创建新代码类型之前需要发生的所有事情. (5认同)