Actualmente estoy usando Generics para hacer algunos métodos dinámicos, como crear un objeto y llenar las propiedades con valores.Creando variables genéricas de un tipo - ¿Cómo? O use Activator.CreateInstance() con propiedades {} en lugar de parameters()?
¿Hay alguna manera de crear "genéricamente" el genérico sin saber el tipo? Por ejemplo:
List<String> = new List<String>()
es una forma predefinied, pero
List<(object.GetType())> = new List<(object.GetType()>()
no funciona ... Pero se puede?
Esto no está funcionando (¿Hay un enfoque similar 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);
}
}
Así, en pocas palabras: ¿Cómo tomar un "tipo" y crear un objeto a partir de que sin el uso de los genéricos? Hasta ahora solo he usado Genéricos en los métodos, pero ¿es posible usar el mismo método en las variables? Tengo que definir un Genérico (T) antes del método, entonces ¿puedo hacer lo mismo con las variables antes de "crearlas"?
... o cómo usar "Activador" para crear un objeto con Propiedades en lugar de Parámetros. Como se hace aquí:
// Con los parámetros de valores
Test t = new Test("Argument1", Argument2);
// Con propiedades
Test t = new Test { Argument1 = "Hello", Argument2 = 123 };
No quiero usar "Lista" en este caso, debe ser cualquier objeto. El "Tipo openListType = typeof (tipo desconocido);" – Deukalion
No veo cómo esta respuesta resuelve el OP "use Activator.CreateInstance() con propiedades {} en lugar de parameters()?" – Avishek