2

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

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

通过此链接:是否有 .NET 函数来验证类名?

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

编辑:

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

namespace Some.Namespace   
{   
  class SomeClass{}   
}

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

4

2 回答 2

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;   
        }
于 2013-03-11T08:43:29.870 回答
0

你可以使用CodeGenerator.ValidateIdentifiers()它。

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

CodeGenerator.ValidateIdentifiers(new CodeNamespace(namespaceName));

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

于 2013-03-08T13:04:19.610 回答