Ajout dynamique d'éléments à une liste & lt; T & gt; à travers la réflexion

Permet de dire que j'ai cette classe

class Child {
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

class Container {
    public List<Child> { get; set; }
}

Je suis en train de travailler sur un deserializer de toutes sortes et je veux être en mesure de créer et de remplir la Child liste de données récupérées. J'ai reçu ce jour (j'ai coupé beaucoup de manipulation pour les autres types, pour cet exemple, de sorte que ses inutilement "douteuses", mais garder avec moi):

var props = typeof(Container).GetProperties();

foreach (var prop in props) {
    var type = prop.PropertyType;
    var name = prop.Name;

    if (type.IsGenericType) {
        var t = type.GetGenericArguments()[0];

        if (type == typeof(List<>)) {
            var list = Activator.CreateInstance(type);
            var elements = GetElements();

            foreach (var element in elements) {
                var item = Activator.CreateInstance(t);
                Map(item, element); 

                //??? how do I do list.Add(item) here?
            }

            prop.SetValue(x, list, null); //x is an instance of Container

        }
    }
}

Je peux pas comprendre comment le cast list essentiellement List<t.GetType()> afin que je puisse accéder à la méthode add et ajoutez l'élément.

source d'informationauteur John Sheehan