Не удалось получить доступ к методу .ToList () в таблице. - PullRequest
2 голосов
/ 07 октября 2011

Я пытаюсь использовать SilverlightPhoneDatabase для использования базы данных sqlite для моего приложения Windows Phone 7.

У dll есть класс Database

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

Определение класса Таблица выглядит следующим образом:

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

Тогда в моем App.xaml У меня есть метод

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

Теперь из моего файла xaml.cs я могу получить доступ к методу .ToList () в таблице. т.е. если я скажу

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

из моего main.xaml.cs я могу получить доступ к методу ToList () (класс Table унаследован от ObservableCollection ..)

Но я создал новый класс в новом cs в том же пространстве имен ... и если я пытаюсь получить доступ к методу ToList () в классе Table, я получаю ошибку компилятора, что Table <> не содержит определения для ' ToList '

Мне просто любопытно, почему это не работает? Это может быть что-то глупое, что я пропускаю.

1 Ответ

15 голосов
/ 07 октября 2011

ToList - это метод расширения для IEnumerable<T>: System.Linq.Enumerable.ToList, поэтому вам необходимо добавить использование для пространства имен System.Linq, чтобы иметь возможность его использовать.

Компилятор в основном переписывает

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

как

System.Linq.Enumerable.ToList(App.MyDB.Table<MyObj>());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...