Ist es möglich, eine Instanz eines untergeordneten Objekts mithilfe des Konstruktors des übergeordneten Elements zu erstellen und eine Art von Parameter (in diesem Fall eine Zeichenfolge) zu übergeben, um den Typ des untergeordneten Objekts anzugeben ?Unterobjekt in übergeordnetem Konstruktor erstellen
Antwort
Nein. In C# erstellen Sie eine Instanz einer Klasse, , dann Die Laufzeit ruft ihren Konstruktor auf. Wenn der Konstruktor ausgeführt wird, ist es zu spät, um einen anderen Typ auszuwählen.
Allerdings ruft ein Konstruktor einer abgeleiteten Klasse immer einen Konstruktor der Basisklasse auf, und Sie können dies zu Ihrem Vorteil verwenden (um zu vermeiden, dass Code wiederholt wird).
Menschen oft erstellen factories zu tun, wovon Sie sprechen. Zum Beispiel, da die Klassen Parent
, Child1:Parent
und Child2:Parent
, könnte man eine Fabrik wie folgt schreiben:
public class ParentFactory {
public Parent CreateParent(string type) {
switch(type) {
case "Child1":
return new Child1();
case "Child2":
return new Child2();
default:
throw new ArgumentException("Unexpected type");
}
}
}
nicht sicher, ob ich richtig verstanden, aber hier ist das, was ich :)
public class parent:child
{
private child childObj;
public parent(string childName)
{
childObj = new child(childName);
}
}
public class child
{
private string name;
public child(string _name)
{
name = _name;
}
}
Nicht ganz so. Es tut dasselbe wie die Antwort von GenericTypeTea, die nicht das ist, was ich wollte. – Farinha
Wenn ich Sie richtig verstehe, möchten Sie eine Klasse A und eine Klasse B erstellen, die von A abgeleitet ist. Dann möchten Sie new A("B")
anrufen und dies sollte Ihnen ein neues B-Objekt zurückgeben?
Das ist nicht möglich.
aber ich weiß nicht, was Sie versuchen zu erreichen, aber vielleicht sollten Sie prüfen, Reflexion, weil es Ihnen erlaubt, eine Instanz einer Klasse durch seinen Namen Zeichenfolge zu erstellen.
http://msdn.microsoft.com/en-us/library/dex1ss7c.aspx
var obj = myAssembly.CreateInstance("myNamespace.myClassB");
- 1. Zugriff aus Unterobjekt in JavaScript
- 2. Smarty Unterobjekt Referenzierung
- 3. db4o Query Unterobjekt
- 4. Sichere Kopie mit übergeordnetem Verzeichnis
- 5. Bedienelemente aus übergeordnetem Formular
- 6. Javascript hinzufügen dynamisch Eigenschaften in Unterobjekt
- 7. Erstellen injizierbare Klasse (Konstruktor)
- 8. Nachrichtenübergabe mit übergeordnetem Handle erreicht
- 9. Was ist ein Unterobjekt für einen Typ?
- 10. Wann Konstruktor in Angular2 Typoskript erstellen?
- 11. in Konstruktor Beispiel innere Klasse erstellen
- 12. Erstellen einer Datei in einem benannten Konstruktor
- 13. Javascript "eine Methode in einem Unterobjekt oder Unterklasse erweitern"
- 14. Python-Import-Modul von übergeordnetem Paket
- 15. Einstellungen laden Datei aus übergeordnetem Verzeichnis
- 16. Python Paket Import aus übergeordnetem Verzeichnis
- 17. Ändern von Kontext zu übergeordnetem mit jQuery
- 18. Erster allgemeiner Parameter von übergeordnetem Typ Klasse
- 19. Kann Klon Methode erstellen Objekt mit Konstruktor
- 20. Erstellen von Objekten, Konstruktor mit va_list
- 21. Kein leerer Konstruktor, wenn ein Dienst erstellen
- 22. Erstellen eines Objekts mit einem Konstruktor
- 23. SQL-Tabelle in XML mit Spalte als übergeordnetem Knoten transformieren
- 24. Import von Dateien aus übergeordnetem Verzeichnis in React native App
- 25. Aktualisieren Sie Datagridview in übergeordnetem Formular von untergeordnetem Formular?
- 26. Steuertext in übergeordnetem Formular aus modalem Popup setzen
- 27. Ansicht in ScrollView passt nicht zu übergeordnetem als konfiguriert
- 28. Kann ich einen parameterlosen Konstruktor für einen parametrischen Typ in einem äußeren Konstruktor erstellen?
- 29. mvc rasiermesseransicht verschachtelt foreach model post null-unterobjekt
- 30. Erstellen von Teilelementen mit Element() - Konstruktor in abaqus python
hast du es versuchen? – tenfour
Wird der Typ des untergeordneten Objekts vom Typ des übergeordneten Objekts übernommen? Wenn ja, suchen Sie nach einer Fabrikmethode. –
+1 Oliver: klingt für mich wie eine Fabrik. – LaGrandMere