C # вопросы для простой программы - PullRequest
1 голос
/ 08 июня 2011

Я изучаю пользовательские элементы управления в C #, поэтому у меня есть класс с именем Books.В этом классе у меня есть статический метод public static string[] GetBooks(), этот метод возвращает имена книг.

public static string[] GetBooks()
{
    return myBookList.ToArray();
}

Теперь у меня есть UserControl, где я поместил DataGrid, и я хочу иметь возможность сделатьчто-то вроде dataGrid.DataSource = Books.GetBooks();.

Проблема в том, что intellisense не получает .GetBooks(), и я думаю, что это потому, что он статический, и я хочу сохранить его статичным.Как я могу это сделать, а также, где лучше всего сделать этот звонок?Я предполагаю, что в файле behing code ascx верно?

Ответы [ 2 ]

4 голосов
/ 08 июня 2011

Проблема в том, что intellisense не получает .GetBooks (), и я думаю, что это потому, что он статический, и я хочу сохранить его статичным.

Почему?Имеет ли смысл, чтобы этот метод был статическим, т. Е. Разумно ли предполагать, что все экземпляры Books будут совместно использовать одни и те же базовые данные Книги?Если нет, то он не должен быть статическим.

Если он должен быть статическим, тогда вам нужно ссылаться на него примерно так (в отличие от использования ссылки на экземпляр)

var books = Books.GetBooks();

Я полагаю, выесть что-то вроде этого прямо сейчас:

var b = new Books();
var books = b.GetBooks(); // Won't work, as GetBooks is static, not an instance method
1 голос
/ 08 июня 2011

Если он статичен и вы делаете это как опубликовано, то есть Books.GetBooks (), проверьте, находятся ли класс и код в одном и том же пространстве имен, или вы заявляете, что используете его. Также убедитесь, что класс Книги общедоступен. Если это в App_Code, установите Build Action = Compile в свойствах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...