Ajouter un élément à la Liste Générique / Collection de l'aide de la réflexion

Je veux ajouter un élément à une liste Générique à l'aide de la réflexion. Dans la méthode "DoSomething", je suis en train de terminer la ligne suivante,

pi.PropertyType.GetMethod("Add").Invoke(??????)

mais je reçois des différents types d'erreur.

Ci-dessous mon code complet

public class MyBaseClass
{        
    public int VechicleId { get; set; }        
}    
public class Car:MyBaseClass
{
    public string Make { get; set; }
}    
public class Bike : MyBaseClass
{
    public int CC { get; set; }
}        
public class Main 
{
    public string AgencyName { get; set; }
    public MyBaseCollection<Car> lstCar {get;set;}

    public void DoSomething()
    {
        PropertyInfo[] p =this.GetType().GetProperties();
        foreach (PropertyInfo pi in p)
        {
            if (pi.PropertyType.Name.Contains("MyBaseCollection"))
            {
                //Cln contains List<Car>
                IEnumerable<MyBaseClass> cln = pi.GetValue(this, null) as IEnumerable<MyBaseClass>;

                **//Now using reflection i want to add  a new car to my object this.MyBaseCollection**
                pi.PropertyType.GetMethod("Add").Invoke(??????)
            }
        }    
    }
}

Toutes les idées /suggestions ?

Ce Type est MyBaseCollection? Il est similaire à une Liste<T>? Pas toutes les classes qui implémentent l'interface IEnumerable sont garantis d'avoir une méthode Add.
MyBaseCollection est propre collection de mise en œuvre qui est dérivée à partir de IList<T> , Même réponse pour la Liste<MyBaseClass> devrait résoudre mon problème...

OriginalL'auteur kayak | 2011-02-05