Ich erweitere die vorhandene .NET-Framework-Klasse, indem ich es ableite. Wie konvertiere ich ein Objekt vom Basistyp in den abgeleiteten Typ?Convert/Cast-Basistyp in abgeleiteten Typ
public class Results { //Framework methods }
public class MyResults : Results { //Nothing here }
//I call the framework method
public static MyResults GetResults()
{
Results results = new Results();
//Results results = new MyResults(); //tried this as well.
results = CallFrameworkMethod();
return (MyResults)results; //Throws runtime exception
}
Ich verstehe, dass dies geschieht, wie ich versuche, einen Basistyp zu einem abgeleiteten Typ zu werfen und wenn abgeleiteten Typ zusätzliche Eigenschaften hat, dann wird der Speicher nicht zugeordnet. Wenn ich die zusätzlichen Eigenschaften hinzufüge, ist es mir egal, ob sie auf Null initialisiert werden.
Wie mache ich das, ohne eine manuelle Kopie zu machen?
Anstatt den Typ zu erweitern, können Sie einfach eine Erweiterungsmethode erstellen? –
Das ist eine gute Idee. Mit Extension-Methoden kann ich neue Methoden anhängen. Ich kann dem Typ keine zusätzlichen Eigenschaften/Variablen hinzufügen. – Nick
Das scheint eine Menge Arbeit zu sein, um das Schreiben eines einfachen Kopierkonstruktors zu vermeiden. Ich weiß in vielen Fällen, dass das nicht möglich ist, aber in diesem Fall scheint es eine mögliche Lösung zu sein. – overslacked