Criando variáveis genéricas de um tipo - como? Ou use Activator.CreateInstance () com propriedades {} em vez de parameters ()?
Atualmente, estou usando o Generics para criar alguns métodos dinâmicos, como criar um objeto e preencher as propriedades com valores.
Existe alguma maneira de "dinamicamente" criar o genérico sem saber o tipo? Por exemplo:
List<String> = new List<String>()
é uma maneira definida, mas
List<(object.GetType())> = new List<(object.GetType()>()
não está funcionando ... Mas pode?
Isso não está funcionando (existe uma abordagem semelhante que funciona?)
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);
}
}
Então, resumindo: como pegar um "Type" e criar um objeto sem usar Generics? Eu usei apenas Generics em métodos até agora, mas é possível usar da mesma maneira em variáveis? Eu tenho que definir um genérico (T) antes do método, então posso fazer o mesmo em variáveis antes de "criá-las"?
... ou como usar o "Ativador" para criar um objeto com Propriedades em vez de Parâmetros. Como você faz aqui:
// Com valores de parâmetros
Test t = new Test("Argument1", Argument2);
// Com propriedades
Test t = new Test { Argument1 = "Hello", Argument2 = 123 };