Dato il seguente codice client:Can A Constructor Restituisce una sottoclassifica?
var obj = new Class1();
C'è un modo per modificare il costruttore di Class1 in modo che sarà effettivamente restituire una sottoclasse (o qualche altra implementazione alternativo), invece?
Vorrei obj per ottenere una delle due diverse implementazioni, a seconda di alcune condizioni. Ovviamente, potrei passare all'utilizzo di un factory o di un framework DI, ma vorrei evitare di cambiare il codice del client, se possibile.
Suppongo che la risposta sia no, ma mi chiedo se c'è un modo intelligente per farlo accadere.
Stiamo considerando l'aggiunta di una funzionalità "estensione nuova" che essenzialmente consente di creare un metodo di produzione statico che verrebbe chiamato quando viene utilizzato l'operatore "nuovo", analogamente ai metodi di estensione quando "." l'operatore è usato Sarebbe un bel zucchero sintattico per la fabbrica. Se si dispone di uno scenario davvero fantastico in cui questo tipo di schema sarebbe utile, mi piacerebbe vedere un esempio. –
@Eric: anche se non si tratta di un esempio C#, mi sono imbattuto in una situazione in cui ciò sarebbe stato utile in C++. Sto sviluppando una libreria multipiattaforma e sarebbe davvero utile per un ABC indipendente dalla piattaforma essere in grado di restituire un'istanza di classe derivata specifica della piattaforma dal suo costruttore. Sono sicuro che ci devono essere situazioni simili da trovare quando si sviluppa con C#. – Mac
@Eric Lippert - Ho uno scenario del mondo reale per te! http://blog.hackensplat.com/2010/09/construct-something-else-c.html – billpg