是否有.NET函数来validation类名?

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

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

System.CodeDom.Compiler.CodeGenerator.IsValidLanguageIndependentIdentifier(string value) 

CSharpCodeProvider类上使用CreateValidIdentifier方法。

 CSharpCodeProvider codeProvider = new CSharpCodeProvider(); string sFixedName = codeProvider.CreateValidIdentifier("somePossiblyInvalidName"); CodeTypeDeclaration codeType = new CodeTypeDeclaration(sFixedName); 

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

我找到了问题的答案。 我可以打电话

 CodeCompiler.ValidateIdentifiers(class1); 

其中class1是CodeObject,用于validationCodeDom树及其下的所有标识符。 所以我可以在创建CodeTypeDeclaration class1之后立即调用它来validation类名,或者我可以构建我的CodeDom然后在最后调用它来validation树中的所有标识符。 正是我需要的!

 public static bool IsReservedKeyWord(string identifier) { Microsoft.CSharp.CSharpCodeProvider csharpProvider = new Microsoft.CSharp.CSharpCodeProvider(); return csharpProvider.IsValidIdentifier(identifier); }