Pregunta

Estoy usando CodeDom para generar dinámicas de código basados en valores.Uno de los valores de los controles de lo que el nombre de la clase que estoy generando es.Sé que podría esterilizar el nombre basado en las reglas del idioma acerca de nombres de clase válido el uso de expresiones regulares, pero me gustaría saber si hay un método específico integrado en el marco de validar y/o esterilizar a un nombre de clase.

¿Fue útil?

Solución

Una manera fácil de determinar si una cadena es un identificador válido para una clase o una variable es llamar al método estático

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

Otros consejos

El uso de la CreateValidIdentifier método en el CSharpCodeProvider clase.

CSharpCodeProvider codeProvider = new CSharpCodeProvider(); 
string sFixedName = codeProvider.CreateValidIdentifier("somePossiblyInvalidName"); 
CodeTypeDeclaration codeType = new CodeTypeDeclaration(sFixedName); 

Devuelve un nombre válido dado algunos datos de entrada.Si usted sólo desea validar el nombre y no se solucionarlo, comparar la entrada y la salida.No alterar la entrada válida para la salida será el equivalente.

He encontrado una respuesta a mi pregunta.Me pueden llamar

CodeCompiler.ValidateIdentifiers(class1);

donde class1 es un CodeObject para validar todos los identificadores que CodeDom árbol y a continuación.Así que puedo decir que esta a la derecha después de que puedo crear mi CodeTypeDeclaration class1 para validar sólo el nombre de la clase, o puedo construir mi CodeDom y, a continuación, llamar a esto al final para validar todos los identificadores en mi árbol.Justo lo que necesitaba!

public static bool IsReservedKeyWord(string identifier)
        {
            Microsoft.CSharp.CSharpCodeProvider csharpProvider = new Microsoft.CSharp.CSharpCodeProvider();
            return csharpProvider.IsValidIdentifier(identifier);
        }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top