Tworzenie zmiennych ogólnych z typu - jak? Lub użyj Activator.CreateInstance () z właściwościami {} zamiast parametrów ()?

Obecnie używam Generics do tworzenia dynamicznych metod, takich jak tworzenie obiektu i wypełnianie właściwości wartościami.

Czy jest jakiś sposób, aby „dynamicznie” utworzyć Generic bez znajomości typu? Na przykład:

List<String> = new List<String>()

jest sposobem predefiniowanym, ale

List<(object.GetType())> = new List<(object.GetType()>()

nie działa ... Ale może?

To nie działa (Czy istnieje podobne podejście, które działa?)

    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);
        }
    }

W skrócie: jak wziąć „typ” i stworzyć z niego obiekt bez użycia generycznych? Do tej pory korzystałem tylko z Generics w metodach, ale czy możliwe jest użycie tej samej metody dla zmiennych? Muszę zdefiniować Generic (T) przed metodą, więc czy mogę zrobić to samo na zmiennych przed ich „stworzeniem”?

... lub jak użyć "Activatora" do utworzenia obiektu z Właściwościami zamiast Parametrów. Tak jak tutaj:

// Z wartościami parametrów

Test t = new Test("Argument1", Argument2);

// Z właściwościami

Test t = new Test { Argument1 = "Hello", Argument2 = 123 };

questionAnswers(3)

yourAnswerToTheQuestion