Ho una classe con due costruttori (C#). Ecco il frammento di codice:Chiamare un costruttore da un altro costruttore nella stessa classe
public class FooBar()
{
public FooBar(string s)
{
// constructor 1, some functionality
}
public FooBar(int i) : this("My String")
{
// constructor 2, some other functionality
}
}
Sì, lo so che posso chiamare un costruttore da un altro utilizzando l'approccio di cui sopra. Ma in questo scenario, se chiamo il costruttore 2, tutte le istruzioni nel costruttore 1 verranno eseguite PRIMA la stessa istruzione nel costruttore 2 viene eseguita.
Quello che voglio è che dopo tutte le dichiarazioni di costruttore 2 vengono eseguiti, allora chiamerà il costruttore 1.
Nella mia situazione esatta, sto facendo l'autenticazione dell'utente. Il costruttore 1 recupera le informazioni utente con solo l'ID utente, ma il costruttore 2 esegue l'autenticazione utente tramite e-mail e password. Se un utente si trova nel database, ottiene l'ID utente e ora desidero che il costruttore 1 inserisca tutte le proprietà della classe.
Per favore fatemi sapere se avete bisogno di ulteriori informazioni. Se pensi che ci sia un altro approccio migliore, sarei felice di ascoltare il suggerimento.
UPDATE 1: Mi chiedo perché una cosa del genere non è implementata:
public FooBar(bool b)
{
// constructor 3, some more functionality
this.FooBar("My String"); // calling constructor 1
}
scenerio Interessante. È possibile spostare la funzionalità in una funzione separata o creare un costruttore sovraccaricato 'FooBar (string s, int i)'. Potrebbe non essere la soluzione migliore, ma solo buttare fuori alcune idee. – Justin
@Justin, mettere la logica in un altro metodo sembra essere un'idea migliore. Grazie. – Farhan