Voglio fare un'interfaccia in C# che definisce un metodo che restituisce sempre un oggetto della classe che implementa, in tal modo:Posso forzare una classe di implementazione per restituire un oggetto del proprio tipo?
public interface IParser {
IParser Parse(string s);
}
public class Parser : IParser {
public Parser Parse(string s) {
return new Parser(s);
}
}
Posso forzare una classe di implementazione per restituire un oggetto del proprio tipo? Se possibile, quindi come? O i generici sono la risposta qui?
NB: Il codice è solo un esempio, non è qualcosa che dovrebbe funzionare.
Mi hai reso molto curioso: perché stai provando a fare questo? Generalmente, il punto di definire un'interfaccia è che il codice client possa fidarsi che una determinata API sia definita su un oggetto senza dover sapere o preoccuparsi di quale sia il tipo concreto di quell'oggetto. Questo è uno dei grandi punti di forza dell'OOP. Che cosa stai cercando di ottenere facendo questo? –
Beh, il mio pensiero era che avendo questa interfaccia si poteva sempre avere fiducia che le classi che implementano l'interfaccia avessero questo metodo e che restituissero sempre il loro tipo. Ma come dici tu, questo potrebbe non essere il miglior design OO e lo abbandonerò per un metodo che restituisce invece il tipo di interfaccia. – Cros