Создание общих переменных из типа - Как? Или используйте Activator.CreateInstance () со свойствами {} вместо параметров ()?
В настоящее время я использую Generics для создания некоторых динамических методов, таких как создание объекта и заполнение свойств значениями.
Есть ли способ «динамически»? создать общий, не зная типа? Например:
List<String> = new List<String>()
это предопределенный способ, но
List<(object.GetType())> = new List<(object.GetType()>()
не работает ... Но так ли это?
Это не работает (Есть ли похожий подход, который работает?)
public T CreateObject<T>(Hashtable values)
{
// If it has parameterless constructor (I check this beforehand)
T obj = (T)Activator.CreateInstance(typeof(T));
foreach (System.Reflection.PropertyInfo p in typeof(T).GetProperties())
{
// Specifically this doesn't work
var propertyValue = (p.PropertyType)values[p.Name];
// Should work if T2 is generic
// var propertyValue = (T2)values[p.Name];
obj.GetType().GetProperty(p.Name).SetValue(obj, propertyValue, null);
}
}
Итак, вкратце: как взять & quot; Тип & quot; и создать объект из этого без использования Generics? До сих пор я использовал только Generics в методах, но возможно ли использовать то же самое для переменных? Я должен определить Generic (T) перед методом, так что я могу сделать то же самое для переменных перед & quot; созданием & quot; их?
... или как использовать & quot; Активатор & quot; создать объект со свойствами вместо параметров. Как вы делаете здесь:
// со значениями параметров
Test t = new Test("Argument1", Argument2);
// со свойствами
Test t = new Test { Argument1 = "Hello", Argument2 = 123 };