Considera le seguenti c # esempio:
public class MyParentClass {
public int MyInt { get; set; }
}
public class MyChildClass : MyParentClass
{
}
public class AnotherClass
{
public MyChildClass GetChildClassFromParentClass(MyParentClass parent)
{
return new MyChildClass() { MyInt = parent.MyInt };
}
}
Mi chiedo perché non è possibile clonare direttamente la classe genitore nel suo figlio senza la fase manuale di copiare tutti i suoi valori, dal momento che MyParentClass
e MyChildClass
condividono questa 'relazione'.
Forse una funzione del genere non sarebbe in grado di garantire la coerenza di MyChildClass
a causa delle dipendenze iniettate mancanti, ma questa funzione linguistica potrebbe almeno consentire questa clonazione se esiste un costruttore parametrico definito per il figlio.
Vorrei essere chiaro So che questa funzione non è una buona idea e sicuramente esistono scenari che rendono questa funzionalità linguistica non fattibile o sicura. Ma mi piacerebbe sapere quali sono questi scenari.
Nota secondaria: credo che questa non sia una domanda basata sull'opinione pubblica, dal momento che nessun linguaggio OOP mainstream sembra offrire questa funzione, quindi devono esserci argomenti oggettivi contro di essa. *