Comment obtenir la liste des valeurs de dictionnaire générique

J'ai utilisé ce ObjectPool classe comme la base de ma Carte d'Identité. Cependant, j'ai besoin de ramener la liste de tous les objets d'un type. Matthieu a :

    public IEnumerable<T> GetItems<T>()
    {
        Type myType = typeof(T);

        if (!m_pool.ContainsKey(myType))
            return new T[0];

        return m_pool[myType].Values as IEnumerable<T>;
    }

Cependant, quand je fais des modifications pour le client comme suit:

        pool.AddItem<Animal>(dog.ID, dog);
        pool.AddItem<Vegetable>(carrot.Identifier, carrot);
        pool.AddItem<Vegetable>(greenbean.Identifier, greenbean);
        pool.AddItem<Mineral>(carbon.UniqueID, carbon);

        Console.WriteLine("Dog is in the pool -- this statement is " + pool.ContainsKey<Animal>(dog.ID));

        IEnumerable<Vegetable> veggies = pool.GetItems<Vegetable>();
        foreach(Vegetable veg in veggies)
            Console.WriteLine(string.Format("{0} - {1}", veg.Color, veg.IsTasty));

légumes est null. Il semblerait que m_pool[myType].Les valeurs ne prend pas en charge la distribution de IEnumerable.

J'ai essayé quelques petites choses, par exemple:

        IDictionary<int, T> dic = (IDictionary<int, T>) m_pool[myType];
        ICollection<T> values = (ICollection<T>)dic.Values;

Cependant, je finis toujours avec une erreur de casting.

Ce qui me manque?

InformationsquelleAutor basscinner | 2009-04-08