Attualmente sto usando Generics per realizzare alcuni metodi dinamici, come la creazione di un oggetto e il riempimento delle proprietà con i valori.Creazione di variabili generiche da un tipo - Come? O utilizzare Activator.CreateInstance() con proprietà {} anziché parametri()?
C'è un modo per creare "dinamicamente" il Generico senza conoscere il tipo? Per esempio:
List<String> = new List<String>()
è un modo predefinied, ma
List<(object.GetType())> = new List<(object.GetType()>()
non funziona ... Ma si può?
questo non sta funzionando (Esiste un approccio simile che funziona?)
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);
}
}
Così, in breve: Come prendere un "Tipo" e creare un oggetto da che senza usare Generics? Ho usato solo metodi generici finora, ma è possibile utilizzare allo stesso modo le variabili? Devo definire un Generico (T) prima del metodo, quindi posso fare lo stesso sulle variabili prima di "crearle"?
... o come utilizzare "Attivatore" per creare un oggetto con Proprietà invece di Parametri. Come si fa qui:
// Con Parametri Valori
Test t = new Test("Argument1", Argument2);
// Con le proprietà
Test t = new Test { Argument1 = "Hello", Argument2 = 123 };
Non voglio usare "Elenco" in questo caso, dovrebbe essere qualsiasi oggetto. Il "Tipo openListType = typeof (tipo sconosciuto);" – Deukalion
Non vedo come questa risposta risolva l'OP "utilizzare Activator.CreateInstance() con proprietà {} invece di parametri()?" – Avishek