Quiero analizar un archivo C#. Lo único que quiero es determinar si contiene una propiedad con un nombre específico; solo una respuesta simple verdadero/falso. O mejor dicho, desde que había comprobación de más de una propiedad en cada serie, la extracción de una lista de nombres de propiedades puedan ser de utilidadExtraer nombres de propiedad de un archivo fuente C#
pensé que podía crear una solución elegante usando el CodeDomProvider
funcionalidad (f # ejemplo):
use reader = new StreamReader(existingFile)
let codeProvider = new CSharpCodeProvider()
let codeUnit = codeProvider.Parse(reader)
Desafortunadamente, la función Parse
no está implementada para el CSharpCodeProvider
. ¿Hay alguna manera de obtener un CodeCompileUnit
de un archivo fuente? ¿O hay otra manera elegante? (Esperaba evitar expresiones regulares sobre esto)?
Edit: Voy a usar esto para la generación automática de código. Básicamente, voy a generar una clase parcial en el archivo xyz.partial.cs. Esto generará una propiedad de esqueleto. Pero si deseo cambiar la implementación de una propiedad, cortaré esa propiedad y la pegaré en el código xyz.cs. Al volver a crear la clase generada, quiero que salte las propiedades de generación que he movido al archivo codificado a mano.
Por lo tanto, la reflexión está fuera de lugar, porque la reflexión me dirá que la propiedad sí existe, pero no si está definida en uno u otro archivo.
Aún así, estoy ansioso por abrir pop Expresso y darle una oportunidad. Puedo expresar cualquier cosa de forma regular y no un poder en el verso puede detenerme. –
¿Consideró la posibilidad de reflexionar sobre la versión compilada de la fuente? ¿O eso no es una opción? Sin embargo, no estoy seguro de si el reflejo proporciona nombres de propiedad. –
@Moron - Eso debería funcionar bastante bien. – ChaosPandion