Подтвердить что ты не робот

Создание универсального объекта на основе переменной типа

Мне нужно создать общий объект на основе типа, который хранится в базе данных. Как я могу добиться этого? Код ниже (который не будет компилироваться) объясняет, что я имею в виду:

string typeString = GetTypeFromDatabase(key);
Type objectType = Type.GetType(typeString);

//This won't work, but you get the idea!
MyObject<objectType> myobject = new MyObject<objectType>();

Можно ли делать такие вещи?

Спасибо

4b9b3361

Ответ 1

Type type = typeof(MyObject<>).MakeGenericType(objectType);
object myObject = Activator.CreateInstance(type);

Также - смотрите; Type.GetType(string) проверяет только исполняющую сборку и несколько системных сборок; он не сканирует все. Если вы используете имя с именем сборки, вы должны быть в порядке - иначе вам может понадобиться сначала получить Assembly и использовать someAssembly.GetType(string).

Ответ 2

Что делать, если мне нужно вызвать функцию myObject, например

Type type = typeof(MyObject<>).MakeGenericType(objectType);
object myObject = Activator.CreateInstance(type);
myobject.SetValue("1212");