我正在学习C#中的用户控件,所以基本上我有一个名为Books
的类。在这个类中,我有一个静态方法public static string[] GetBooks()
,这个方法返回书名。
public static string[] GetBooks()
{
return myBookList.ToArray();
}
现在我有一个UserControl
,我放置了DataGrid
,我希望能够执行dataGrid.DataSource = Books.GetBooks();
之类的操作。
问题是intellisense没有获得.GetBooks()
,我认为这是因为它是静态的,我想保持静态。我怎么能这样做,而且,这个电话的最佳地点在哪里?我假设在ascx的behing代码文件中对吗?
答案 0 :(得分:4)
问题是intellisense没有得到.GetBooks(),我认为这是因为它是静态的,我想保持静态。
为什么呢?这种方法是静态的是否合理,即假设Books
的所有实例共享相同的基础Book数据是否合理?如果不是那么它不应该是静态的。
如果它应该是静态的,那么你需要像这样引用它(而不是使用实例引用)
var books = Books.GetBooks();
我认为你现在有这样的事情:
var b = new Books();
var books = b.GetBooks(); // Won't work, as GetBooks is static, not an instance method
答案 1 :(得分:1)
如果它是静态的并且您正在发布它,即Books.GetBooks(),请检查后面的类和代码是否在同一名称空间中,或者您是否声明使用它。还要确保课程图书是公开的。如果它在App_Code中,请在Properties中设置Build Action = Compile。