2011-01-25 5 views
2

У меня есть объект словаряPass Type в качестве параметра функции

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

У меня также есть BaseClass и ряд дочерних классов, говорят: ChildClass1, ChildClass2 и т.д. словарь имеет значения:

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

Мой вопрос - есть ли способ сделать что-то вроде этого:

BaseClass c = new <<get a type from the dict: dict[type1]>>()? 

Я просто хочу сделать свое решение более гибким, но я не уверен, что это вообще возможно. Спасибо!

+0

Как ответил Sparkie, Активатор может сделать это для вас. Если вам нужен только один экземпляр каждого дочернего класса, вы можете посмотреть на объектные фабрики или структурные карты. – Rob

+0

Это ценный совет, спасибо! Я еще не знаком с этими концепциями. – Masha

ответ

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

Это действительно работало, спасибо большое! Кроме того, спасибо за то, что вы представили мне эту новую концепцию :) – Masha

Смежные вопросы