Как проверить имя пространства имен в CodeDOM?
Я нашел метод проверки имени класса, используя CodeDOM из SE, и я использовал его:
System.CodeDom.Compiler.CodeGenerator.IsValidLanguageIndependentIdentifier(string value)
по этой ссылке: есть ли функция.NET для проверки имени класса?
Но имена классов не допускают '.' (Период OEM), где пространства имен могут быть примерно такими:System.Linq
например, который позволяет ".". Прежде чем перейти к таким опциям, как Regex
или циклы для проверки имен пространств имен, я хотел бы знать, есть ли какие-либо методы в.NET для этой задачи.
РЕДАКТИРОВАТЬ:
Фактический сценарий, у меня есть от. Пользователь может дать имя класса и пространство имен из текстовых полей. Для этого имени класса и пространства имен я дам сгенерированный код. Если пользователь ввел SomeClass в качестве имени класса и Some.Namespace для пространства имен, то сгенерированный код будет:
namespace Some.Namespace
{
class SomeClass{}
}
Для этого мне нужно проверить правильность ввода этих двух имен.
2 ответа
Я попробовал другой подход, и он работает для меня.
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;
}
Ты можешь использовать CodeGenerator.ValidateIdentifiers()
для этого.
Если вы не хотите проверять все дерево, только одно имя пространства имен, вы можете создать временный объект для этого:
CodeGenerator.ValidateIdentifiers(new CodeNamespace(namespaceName));
Согласно документации, если идентификатор недействителен, метод сгенерирует ArgumentException
,