代码之家  ›  专栏  ›  技术社区  ›  Zach

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

  •  21
  • Zach  · 技术社区  · 16 年前

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

    4 回复  |  直到 16 年前
        1
  •  25
  •   Micah    16 年前

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

    System.CodeDom.Compiler.CodeGenerator.IsValidLanguageIndependentIdentifier(string value)
    
        2
  •  8
  •   Rüdiger Herrmann    10 年前

    使用 CreateValidIdentifier 方法在 CSharpCodeProvider 班级。

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

    它返回一个给定输入的有效名称。如果只想验证名称而不修复它,请比较输入和输出。它不会改变有效的输入,因此输出是等效的。

        3
  •  2
  •   Zach    16 年前

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

    CodeCompiler.ValidateIdentifiers(class1);
    

    其中class1是一个代码对象,用于验证该codedom树及其下的所有标识符。所以我可以在创建我的codetypedeclaration类1后立即调用它来验证类名,或者我可以构建我的codedom,然后在最后调用它来验证树中的所有标识符。正是我需要的!

        4
  •  1
  •   rose123    16 年前
    public static bool IsReservedKeyWord(string identifier)
            {
                Microsoft.CSharp.CSharpCodeProvider csharpProvider = new Microsoft.CSharp.CSharpCodeProvider();
                return csharpProvider.IsValidIdentifier(identifier);
            }