Je suis en train d'écrire une méthode d'extension pour insérer des données dans un dictionnaire de dictionnaires définis comme suit:méthode d'extension pour le dictionnaire des dictionnaires
items=Dictionary<long,Dictionary<int,SomeType>>()
Ce que j'ai à ce jour est:
public static void LeafDictionaryAdd<TKEY1,TKEY2,TVALUE>(this IDictionary<TKEY1,IDictionary<TKEY2,TVALUE>> dict,TKEY1 key1,TKEY2 key2,TVALUE value)
{
var leafDictionary =
dict.ContainsKey(key1)
? dict[key1]
: (dict[key1] = new Dictionary<TKEY2, TVALUE>());
leafDictionary.Add(key2,value);
}
mais le compilateur ne l'aime pas. L'instruction:
items.LeafDictionaryAdd(longKey, intKey, someTypeValue);
me donne une erreur d'inférence de type.
Pour la déclaration:
items.LeafDictionaryAdd<long, int, SomeType>(longKey, intKey, someTypeValue);
je reçois » ... ne contient pas de définition ... et la meilleure surcharge de méthode d'extension a quelques arguments non valides
Qu'est-ce que je fais mal. ?
Cela a fonctionné pour moi quand j'ai essayé c'est: | – mquander
Argh. Quelle douleur. Pas de mods du tout? – spender
Oh, j'avais mes "items" déclarés comme IDictionary d'IDictionnaires - c'est probablement la différence clé. – mquander