Voglio corrispondere (selezionare dal file di classe) methodname, nome proprietà e nome campi.C# regex - seleziona i nomi delle proprietà di classe, il nome dei metodi ei campi dal file di classe (.cs)
Questo è esempio di classe:
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;
}
}
Ho codice per i metodi:
(?:public|private|protected)([\s\w]*)\s+(\w+)\s*\(\s*(?:\w+\s+(\w+)\s*,?\s*)+\)
e ho avuto domande:
- questo codice regex sopra ottiene tutti i metodi e lo funziona piuttosto bene ma anche io voglio che selezioni il nome del metodo ma senza parametri e accessori. Così dalla classe exaplmce usando il mio risultato il codice sarà: Perl pubblico() e doSomething public static (test string) ma voglio quel tipo di risultato: Perl() e doSomething(). Quindi - il mio codice corrisponde bene ma voglio che i risultati vengano visualizzati proprio come ho scritto io nella frase precedente.
- come selezionare le proprietà? con risultato visualizzato: tipo e proprietà nome. Quindi dal risultato della classe di estrazione sarà: stringa Nome
- come selezionare i campi con risultato: tipo nome_campo. Nel caso in cui fuori che sarà: stringa _name
può essere duplicato di [questa risposta SO] (http://stackoverflow.com/a/11647554/1495442) – Ria
Potrebbe essere utile utilizzare la riflessione sulla classe compilata anziché regex sul file di codice? Otterrai risultati molto più affidabili (ovvero non dovrai preoccuparti se il comando regex copre tutti i casi possibili) e potrebbe essere utilizzato con qualsiasi linguaggio .NET, non solo C#. –
quindi ho la cartella con i file di classe .cs. Posso compilarlo "in aria" e quindi usare la riflessione? Come compilare la classe dinamicamente, ad esempio, esiste una funzione che posso usare? per esempio. sul pulsante fai clic su tutti i file cs nella cartella selezionata? – born2fr4g