我使用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{}
}
为此,我需要验证用户输入的两个名字。
答案 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
。