Je pense que vous devriez probablement écrire votre classe d'emballage en fonction de vos besoins. Je veux dire, si vous avez besoin de stocker un dictionnaire de listes pré-faites, Dictionary<int, List<type>>
devrait être bien tant que c'est seulement une propriété privée. Vous ne devriez pas l'exposer publiquement car il expose évidemment trop d'informations et vous ne pouvez pas l'afficher en IDictionary<int, IList<T>>
ou quelque chose de similaire à cause du manque de covariance.
Votre meilleur pari serait quelque chose comme ça:
class MyWrapper<T>()
{
private Dictionary<int, List<T>> dictionary { get; set; }
public MyWrapper() { dictionary = new Dictionary<int, List<T>>(); }
// Adds a new item to the collection
public void Add(int key, T item)
{
List<T> list = null;
if (!dictionary.TryGetValue(key, out list))
{
// If dictionary does not contain the key, we need to create a new list
list = new List<T>();
dictionary.Add(key, list);
}
list.Add(item);
}
public IEnumerable<T> this[int key]
{
get
{
List<T> list = null;
// We just return an empty list if the key is not found
if (!dictionary.TryGetValue(key, out list)) return new List<T>();
else return list;
}
}
}
De toute évidence, vos besoins peuvent être différents, vous devrez peut-être mettre en œuvre deux interfaces, etc., mais cela est l'idée générale.
Vous voulez dire var x = new Dictionnaire>(); ? –
tuinstoel
La question est un peu floue, pourriez-vous la reformuler? Demandez-vous si Dictionary est une bonne collection pour conserver les clés et les valeurs? – dalle