Quiero hacer coincidir (seleccionar de un archivo de clase) nombre de método, nombre de propiedad y nombre de campo.C# regex - seleccione nombres de propiedades de clase, nombres de métodos y campos del archivo de clase (.cs)
Esta es la clase ejemplo:
class Perl
{
string _name;
public string Name { get; set; }
public Perl()
{
// Assign this._name
this._name = "Perl";
// Assign _name
_name = "Sam";
// The two forms reference the same field.
Console.WriteLine(this._name);
Console.WriteLine(_name);
}
public static string doSomething(string test)
{
bla test;
}
}
llegué código para los métodos:
(?:public|private|protected)([\s\w]*)\s+(\w+)\s*\(\s*(?:\w+\s+(\w+)\s*,?\s*)+\)
y yo nos pregunta:
- este código expresión regular anterior se lleva todos los métodos y se funciona bastante bien pero también quiero que seleccione el nombre del método pero sin parámetros y accesos. Así que desde la clase exaplmce usando mi resultado código será: Perl pública() y doSomething static (prueba de la cuerda) pero quiero ese tipo de resultado: Perl() y doSomething(). Por lo tanto, mi código coincide con el bueno pero quiero que el resultado se muestre como lo escribí en la frase anterior en I .
- cómo seleccionar propiedades? con el resultado mostrado: tipo y propiedad nombre. Por lo tanto, a partir del resultado de clase exaple será: cadena Nombre
- cómo seleccionar campos con resultado: escriba field_name. En caso de que fuera será: cadena _name
puede estar duplicado de [esta respuesta SO] (http://stackoverflow.com/a/11647554/1495442) – Ria
¿Podría tener sentido utilizar la reflexión en la clase compilada en lugar de regex en el archivo de código? Obtendrás resultados mucho más confiables (es decir, no tienes que preocuparte si tu comando de expresión regular cubre todos los casos posibles), y podría usarse con cualquier lenguaje .NET, no solo con C#. –
así que obtuve una carpeta con archivos de clase .cs. ¿Puedo compilarlo "en el aire" y luego usar el reflejo? ¿Cómo compilar clases dinámicamente, por ejemplo, hay una función que puedo usar? por ejemplo. en el botón clic comile todos los archivos cs en la carpeta seleccionada? – born2fr4g