2012-02-08 5 views
0

J'ai le code suivant. Il utilise une classe créée pour gérer un type de fichier spécifique appelé plist. J'essaie de prendre ce qu'il me crache et de le mettre dans un dictionnaire.Comment convertir ce type dans un dictionnaire?

Dictionary<string, IPropertyListDictionary> maindict = new Dictionary<string, IPropertyListDictionary>(); 
maindict = data["section0"].DictionaryItems; 

Le problème est que je reçois une ligne rouge sous « DictionaryItems » avec l'erreur suivante:

Cannot implicitly convert type 
'System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string,CodeTitans.Core.Generics.IPropertyListItem>>' 
to 
'System.Collections.Generic.Dictionary<string,CodeTitans.Core.Generics.IPropertyListDictionary>'. 
An explicit conversion exists (are you missing a cast?) 

Quelqu'un peut-il me aider jetai correctement ce? Merci.

+0

http://stackoverflow.com/questions/2636603/recreating-a-dictionary-from-an-ienumerable –

+0

+1 pour l'affichage du message d'erreur exact. – Marlon

Répondre

4

Essayez d'utiliser cette

Dictionary<string, IPropertyListDictionary> maindict = (data["section0"].DictionaryItems).ToDictionary(x => x.Key, x => x.Value); 
+4

Vous créez une nouvelle instance de dictionnaire dans votre première ligne sans aucune raison. Il devrait être juste 'Dictionary maindict = (données [" section0 "]. DictionaryItems) .ToDictionary (x => x.Key, x => x.Value); ' –

+0

Cela semble fonctionner. Merci Lester. –

-2

Vous ne pouvez pas lancer, mais vous pouvez le convertir en écrivant votre propre boucle ou en utilisant la méthode d'extension ToDictionary() dans LINQ.

using System.Collections.Generic; 
using System.Linq; 

// ... 
Dictionary<string, IPropertyListDictionary> mainDictionary = data["section0"].DictionaryItems.ToDictionary(); 
Questions connexes