Ho un costruttore piuttosto lungo che sta eseguendo vari lavori di inizializzazione e, in quanto tale, ho voluto suddividere parte di questo lavoro in alcune funzioni. Questo mi ha portato a chiedermi se dovrei rendere le suddette funzioni istanza o metodi statici. Capisco il rischio di chiamare una funzione virtuale da un costruttore, ma penso anche che non ci sia qualcosa di giusto nel chiamare un metodo di istanza su un oggetto che non è al 100% istanziato. Sicuramente questa è una contraddizione in termini.Chiamare il metodo di istanza da un costruttore in C#
Sarei interessato all'opinione della gente su questo argomento. Ho anche scoperto che utilizzando un metodo statico per restituire una variabile inizializzata, potrei rendere il membro target di sola lettura. Ecco un'illustrazione semplificata del mio scenario.
public class A
{
private readonly string _foo;
public A()
{
_foo = InitialiseFoo();
}
private static InitialiseFoo()
{
// Do stuff
return new string ("foo");
}
}
Perché hai un lungo costruttore? Non è così che dovrebbero essere i costruttori. Dovresti usare metodi per eseguire lunghe operazioni. È sempre molto frustrante provare a utilizzare alcune API e questa API esegue l'accesso al database e le cose nel suo costruttore e potenzialmente genera eccezioni e altro. Fallo È veramente noioso. I costruttori dovrebbero essere semplici. –
Sono assolutamente d'accordo con te su questo, ma sto codificando un servizio Windows che deve prima ottenere il suo nome di servizio da un file di configurazione. Puoi solo impostare il nome di un servizio all'interno del suo costruttore, quindi sono un po 'bloccato con questo. – user738134