Как проверить имя пространства имен в 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,

Другие вопросы по тегам