Y a-t-il un moyen de créer un objet sans utiliser de nouveau mot clé dans c # quelque chose comme classe.forname (); en Java. P>
Je veux créer de manière dynamique un objet d'une classe. La création d'objets peut dépendre de la saisie des utilisateurs.
J'ai une classe de base x et il y a 5 sous-classes (A, B, C, D, E). Ma saisie d'utilisateur sera une ou ses noms de classe. En utilisant cela, j'ai besoin de créer un objet de cette classe.Comment fais-je cela p>
5 Réponses :
Vous pouvez utiliser Classe d'activateur .
Type type = typeof(MyClass); object[] parameters = new object[]{1, "hello", "world" }; object obj = Activator.CreateInstance(type, parameters); MyClass myClass = obj as MyClass;
Il convient de noter que cela est nettement plus lent et ne doit pas être utilisé juste b> pour éviter le nouvel opérateur code> neuf code>
Je vois un nouveau code> mot-clé là-bas. : P
Vous pourrez peut-être le faire avec
typeof(MyType)
Désolé - Townvoted parce que la réponse ne précise pas comment vous pourriez le faire.
Voulez-vous dire une classe statique?
static class PizzaFactory { static Pizza CreatePizza(String topping) { if (topping == "cheese") { return new CheesePizza(); } else if (topping == "salami") { return new SalamiPizza(); } } } class Pizza { } class CheesePizza : Pizza { } class SalamiPizza : Pizza { }
Vous pouvez utiliser le mot-clé code> code> par défaut, mais il n'entraînera qu'une instance pour les types de valeur:
La classe d'activateur est très lente que vous pouvez utiliser les expressions Lambda Regardez cette Alternative activatrice P>
Qu'essayez-vous d'atteindre?
Stackoverflow.com/Questtions/3538304/...
D'accord avec Gaz .., veuillez fournir plus d'informations. Il y a de rares cas où vous voulez faire quelque chose comme ça.
Même chose que l'objet.getType (). Ce que cela a à voir avec l'opérateur nouveau i> est difficile à deviner. Je suppose que vous serez intéressé par Activator.CreateInstance ().
Je veux créer de manière dynamique un objet d'une classe. La création d'objets peut dépendre de la saisie des utilisateurs.
Qui évoque des questions comme celle-ci? "Cette question montre l'effort de recherche;" (Oh?) "C'est utile et clair" (Oh?).
Si tout ce que vous voulez faire est de créer un type différent en fonction de diverses pièces d'utilisateur, il vous suffit de mettre en œuvre une usine ou un constructeur, mais il est difficile de deviner sans savoir comment la création de la classe doit être dérivée de l'entrée.
J'ai une classe de base x et il y a 5 sous-classes (A, B, C, D, E). Mon entrée d'utilisateur sera A ou B ou ... E Utilisez cela, j'ai besoin de créer un objet de cette classe.Comment fais-je cela
Cela dépend de leur constructeur. S'ils acceptent les mêmes paramètres, vous pouvez penser à utiliser une usine.