J'utilise GetParameter pour déterminer les paramètres dont le constructeur a besoin. Je peux en avoir une liste. Maintenant, je veux invoquer le ctor. Est-ce possible s'il n'y en a pas vide?Est-il possible d'invoquer dynamiquement un constructeur en utilisant relfection s'il n'y a pas de constructeur par défaut vide?
Répondre
Quelle langue? Pour C#, vous pouvez utiliser
Activator.CreateInstance(typeof(X), constructorparm1, constructorparam2...)
alors qu'est-ce que je reçois? un objet générique? que je peux lancer au type que j'ai affaire? – topwik
Vous récupérez un objet. Vous devez le transformer ou utiliser l'opérateur AS pour obtenir l'objet comme type: X instance = (X) Activator.CreateInstance (typeof (X), constructorparm1, constructorparam2 ...) – saret
Je pense que la question Je dois demander alors comment est-ce que je crée un type de système d'un ParameterInfo? Je reçois une liste de paramètres pour mon ctor. Je reviens paramInfo qui me dit que les 2 premiers sont des bools et les 2 autres sont des ints. Maintenant, j'ai besoin de créer un tableau qui contient 2 booléens, soit vrai ou flase bien sûr (basé sur l'entrée utilisateur de l'interface utilisateur ou autre), et 2 entrées définies par l'utilisateur à partir de l'interface utilisateur ... – topwik
Est-ce ce que vous cherchez? Cela crée une instance de SqlConnection en transmettant une chaîne au constructeur. Si vous voulez transmettre plus de valeurs, ajoutez-les simplement au tableau.
SqlConnection conn;
conn = (SqlConnection)System.Activator.CreateInstance(typeof(SqlConnection), new object[] { "Server=myserver" });
Console.WriteLine(conn.ConnectionString);
oui! mais mes paramètres doivent être plus dynamiques que ça. J'ai besoin de regarder le constructeur et s'il a des paramètres, je dois regarder chaque paramètre et obtenir son type de système, comme boolean ou int, puis construire un tableau de ces paramètres, en définissant leur valeur, puis en passant à la création instance ou ctor.invoke ... ParameterInfo [] pi = t.GetConstructors() [0] .GetParameters(); foreach (ParameterInfo p in pi) { if (p est une valeur booléenne) {args [idx] = new Boolean (true); } } Je ne sais pas. Quelque chose comme ça. Je ne suis pas sûr de ce qui est possible. } – topwik
Type realType = Type.GetType (paramInfo.ParameterType.FullName); pourrait faire l'affaire. – topwik
Oubliez ça. Bien qu'il y ait probablement une façon alambiquée de faire cela, je vais m'assurer que chacun des types déclarés dans mon assembly a un constructeur vide par défaut, donc je n'ai pas à me soucier des params lors de l'obtention de l'objet. Ensuite, il devrait être juste une question de passer en revue les propriétés et de définir les valeurs sur eux ... j'espère que c'est plus facile. Des commentaires? N'importe qui? Si c'est aussi difficile, SO va certainement voir une autre question de ma part! – topwik
- 1. C++ vide Constructeur de chaîne
- 2. ASP.NET MVC - ASPX avec constructeur par défaut
- 3. Comment définir un constructeur par défaut par code en utilisant StructureMap?
- 4. Deux façons d'appeler le constructeur par défaut
- 5. Pouvez-vous vérifier null lorsque un constructeur appelle un autre constructeur en utilisant l'objet donné au premier constructeur?
- 6. classe abstraite avec constructeur d'accès Api mais par défaut publié
- 7. Paramètre de template par défaut dans le constructeur
- 8. Comment puis-je appeler dynamiquement un constructeur en C#?
- 9. Pourquoi shared_ptr a un constructeur explicite
- 10. En java, comment faire une classe avec un constructeur privé dont la superclasse a aussi un constructeur privé?
- 11. Définir le constructeur par défaut avec StructureMap sans fournir d'arguments ou en utilisant l'attribut DefaultConstructor
- 12. Erreur "Aucun constructeur par défaut approprié disponible" dans Visual C++
- 13. constructeur ne fonctionne pas
- 14. Modèle d'usine en C# et n'utilisant pas le constructeur par défaut
- 15. En utilisant RhinoMocks, comment simulez-vous ou stub une classe concrète sans un constructeur vide?
- 16. Surcharge "base" constructeur ou "this" constructeur?
- 17. Comment résoudre la surcharge de fonction ambiguë en raison de constructeur par défaut dans le paramètre
- 18. problème constructeur en java
- 19. Constructeur de tables lua
- 20. Est-il possible de quitter gracieusement dans un constructeur?
- 21. Paramètre constructeur de printemps?
- 22. Création automatique du constructeur, selon la classe parent constructeur (C++)
- 23. constructeur pointeur automatique en VC2008
- 24. Que se passe-t-il dans le code du constructeur que le compilateur exécute et fournit le constructeur par défaut?
- 25. Spécialisation du constructeur en python
- 26. StructureMap: Comment définir un constructeur par défaut pour un générique ouvert?
- 27. constructeur interne
- 28. F # Constructeur
- 29. C#: l'objet HtmlDocument n'a pas de constructeur?
- 30. Constructeur avec des références n'assignant pas correctement?
Quelle langue? Je sais que c'est possible en Java, mais il y a un certain nombre d'autres langages qui supportent ce type de réflexion (comme C#). – Jonathan
C# à coup sûr. Merci les amis. Je vais essayer un peu de ça. À votre santé. – topwik