Est-il possible de créer une instance d'un objet enfant en utilisant le constructeur du parent et de lui passer une sorte de paramètre (une chaîne, dans ce cas) pour lui indiquer le type d'enfant à créer ?Créer un objet enfant dans le constructeur parent
Répondre
Non. En C#, vous créez une instance d'une classe, puis l'environnement d'exécution appelle son constructeur. Au moment où le constructeur s'exécute il est trop tard pour choisir un autre type. Cependant, un constructeur de classe dérivée appelle toujours l'un de ses constructeurs de classe de base, et vous pouvez l'utiliser à votre avantage (pour éviter de répéter le code).
Les gens créent souvent factories pour faire ce dont vous parlez. Par exemple, étant donné les classes Parent
, Child1:Parent
et Child2:Parent
, vous pourriez écrire une usine comme ceci:
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");
}
}
}
Je ne sais pas si je comprends bien, mais voici ce que je compris :)
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;
}
}
Pas tout à fait cela. Il fait la même chose que la réponse fournie par GenericTypeTea, ce qui n'est pas ce que je voulais. – Farinha
Si je vous ai bien compris, vous voulez créer une classe A et une classe B qui dérive de A. Ensuite, vous voulez appeler new A("B")
et cela devrait vous renvoyer un nouvel objet B?
Ce n'est pas possible.
Cependant, je ne sais pas ce que vous essayez d'accomplir, mais peut-être que vous devriez vérifier réflexion, car il vous permet de créer une instance d'une classe par sa chaîne de nom.
http://msdn.microsoft.com/en-us/library/dex1ss7c.aspx
var obj = myAssembly.CreateInstance("myNamespace.myClassB");
- 1. relation parent-enfant dans un objet composite?
- 2. Appel du constructeur de classe enfant avant le constructeur parent
- 3. Meilleure pratique: Ajouter un noeud enfant à un parent dans le constructeur enfant ou non?
- 4. AS3: objet enfant extérieur parent
- 5. Transférer un objet de parent à enfant
- 6. Actionscript Enfant dans le parent parent
- 7. Comment supprimer un objet enfant dans NHibernate?
- 8. Ruby on Rails - Ajout d'un objet parent à un enfant?
- 9. Dans .NET, un constructeur 'class parent' appelle-t-il le constructeur de sa classe enfant en premier?
- 10. Comment puis-je créer une relation parent/enfant avec le même objet avec AutoPersistenceModel
- 11. Comment créer un @Entity avec une relation parent/enfant
- 12. rails: créer Parent, si n'existe pas, whilte créer enfant enregistrement
- 13. Copie en Constructor enfant mais non Parent
- 14. Objet parent dans php
- 15. PHP: appel du constructeur enfant de la méthode statique dans le parent
- 16. Le constructeur de Superclass s'exécute-t-il dans le constructeur enfant en PHP?
- 17. PHP: Créer un nouveau nœud dans le parent
- 18. JavaScript: une fonction constructeur peut-elle créer un objet documentElement?
- 19. Comment charger un type dans le site Web parent-enfant
- 20. Scala génériques récursives: Parent [enfant] et enfant [Parent]
- 21. Evénements de relation d'objet parent-enfant
- 22. PHP Accès aux propriétés privées d'un enfant dans le parent
- 23. parent NHibernate/enfant un à un mappage
- 24. Un thread enfant d'un thread de dialogue GUI parent peut-il créer une fenêtre enfant?
- 25. Puis-je forcer une classe enfant à utiliser le constructeur du parent?
- 26. Hiérarchie parent-enfant
- 27. parent-enfant table layout
- 28. Remplacer le constructeur de parent d'un parent en PHP
- 29. créer un processus enfant
- 30. plsql enfant parent oracle
Vous avez déjà essayé? – tenfour
Le type de l'objet enfant est-il hérité du type du parent? Si oui, vous cherchez une méthode d'usine. –
+1 Oliver: ça me semble définitivement aussi une usine. – LaGrandMere