如何验证CodeDOM中的命名空间名称?

时间:2013-03-07 05:48:10

标签: c# namespaces codedom validating

我使用SE中的CodeDOM找到了类名验证方法,我使用它:

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

通过此链接:Is there a .NET function to validate a class name?

但是,班级名称不允许'。' (OEM期间)名称空间可以是这样的: 例如System.Linq允许'。'。在使用Regex之类的选项或用于验证命名空间名称的循环之前,我想知道.NET中是否有任何方法可以执行此任务。

编辑:

实际情况是,我有一个来自。用户可以从文本框中提供类名和命名空间。对于该类名和命名空间,我将提供生成的代码。如果用户输入SomeClass作为类名,Some.Namespace作为名称空间,则生成的代码将为:

namespace Some.Namespace   
{   
  class SomeClass{}   
}

为此,我需要验证用户输入的两个名字。

2 个答案:

答案 0 :(得分:5)

我尝试了一种不同的方法,它对我有用。

public bool IsValidNamespace(string input)  
        {  
            //Split the string from '.' and check each part for validity  
            string[] strArray = input.Split('.');  
            foreach (string item in strArray)  
            {                  
                if (! CodeGenerator.IsValidLanguageIndependentIdentifier(item))  
                    return false;  
            }  
            return true;   
        }

答案 1 :(得分:0)

您可以使用CodeGenerator.ValidateIdentifiers()

如果您不想检查整个树,只需要一个命名空间名称,则可以为此创建一个临时对象:

CodeGenerator.ValidateIdentifiers(new CodeNamespace(namespaceName));

根据文档,如果标识符无效,该方法将抛出ArgumentException