2011-10-07 2 views
2

J'essaie d'utiliser SilverlightPhoneDatabase pour utiliser une base de données sqlite pour mon application Windows Phone 7.Impossible d'accéder à la méthode .ToList() sur la table

Le dll a une base de données de classe

public class Database 
    { 
    . 
    . 
    . 
    public Table<T> Table<T>(); 
    . 
    . 
    } 

Définition du tableau de classe est la suivante:

public class Table<T> : ObservableCollection<T>, ITable 

Puis dans mon App.xaml J'ai une méthode

public static Database MyDB 
{ 
get 
{ 
// Delay creation of the view model until necessary 
if (database == null) 
OpenDatabase<MyObj>("MyObj"); 
return database; 
} 
} 

Maintenant, à partir de mon fichier xaml.cs, je peux accéder à la méthode .ToList() sur la Table. -à-dire si je dis

App.MyDB.Table<MyObj>().ToList();

de mes main.xaml.cs, je peux accéder à la méthode (tableau classe héritée de ObservableCollection ..)

Mais ToList() J'ai créé une nouvelle classe un nouveau cs dans le même espace de nommage .. et si j'essaye d'accéder à la méthode ToList() sur la classe Table, j'obtiens l'erreur de compilation que la table <> ne contient pas la définition pour 'ToList'

Je suis simplement curieux pourquoi ça ne marche pas? C'est peut-être quelque chose de stupide qui me manque.

Répondre

12

ToList est une méthode d'extension sur IEnumerable<T>: System.Linq.Enumerable.ToList de sorte que vous devez ajouter une utilisation pour l'espace de noms System.Linq pour pouvoir l'utiliser.

Le compilateur est en train de réécrire essentiellement

App.MyDB.Table<MyObj>().ToList(); 

comme

System.Linq.Enumerable.ToList(App.MyDB.Table<MyObj>()); 
+0

Intéressant .. Merci .. Je vais essayer ce soir et vous faire savoir .. – franklins

+0

Oui qui l'a fait ... Il était étrange .. Il n'y avait pas de Resolve suggestions quand je fais un clic droit .. – franklins

+0

AFAIK vous avez besoin de ReSharper pour avoir une suggestion sur le 'using' vous devez ajouter pour faire une méthode d'extension fonctionne, studio visuel ne les fournit pas. –

Questions connexes