Re: Создать объект на основе данных Type
От: nikov США http://www.linkedin.com/in/nikov
Дата: 31.08.06 12:59
Оценка: 4 (1)
Здравствуйте, Popsodav, Вы писали:

P>Такая ситуация. Есть функция, в неё передаётся класс Type от какого-то класса.

P>Можно ли в этой функции на основе данных Type создать объект передаваемого класса?

Если есть открытый конструктор без параметоров (в т.ч. value-типы):
System.Activator.CreateInstance(type);


Если неизвестно, является ли конструктор без параметоров открытым:
System.Activator.CreateInstance(type, true);


Если есть конструктор с параметрами: соответствующие перегруженные версии метода Activator.CreateInstance.

Если неизвестно, какие конструкторы есть у класса, то все равно можно создать неинициализированный экземпляр (выделена память, заполнена нулями, но никакой конструктор не вызван):

System.Runtime.Serialization.FormatterServices.GetUninitializedObject(type);


Последним методом пользуются стандартные классы, которые занимаются десериализацией. Им необходимо создать "заготовку" объекта, после чего заполнить значения его полей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.