2011-01-25 5 views
2

j'ai un objet dictionnairetype passe comme paramètre à une fonction

Dictionary<string, Type> dict = new Dictionary<string, Type>(); 

J'ai aussi un BaseClass et un certain nombre d'enfants classes, dites: ChildClass1, ChildClass2, etc. Le dictionnaire a des valeurs:

dict.Add("type1", typeof(ChildClass1)); 
dict.Add("type2", typeof(ChildClass2)); 

Ma question est - est-il possible de faire quelque chose comme ceci:Je veux juste rendre ma solution plus flexible, mais je ne suis pas sûr que ce soit possible du tout. Merci!

+0

Comme réponse Sparkie, Activator peut le faire pour vous. Si vous n'avez besoin que d'une seule instance de chaque classe enfant, vous voudrez peut-être consulter les usines d'objets ou les cartes de structure – Rob

+0

C'est un conseil précieux, merci! Je ne connais pas encore ces concepts. – Masha

Répondre

6
var c = (BaseClass)Activator.CreateInstance(dict["type1"]); 
+0

Cela a fonctionné, merci beaucoup! Aussi, merci de m'avoir présenté ce nouveau concept :) – Masha

1

vous pouvez invoquer Activator.CreateInstance (type)

Questions connexes