简单程序的C#问题

时间:2011-06-08 19:29:24

标签: c# c#-4.0

我正在学习C#中的用户控件,所以基本上我有一个名为Books的类。在这个类中,我有一个静态方法public static string[] GetBooks(),这个方法返回书名。

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

现在我有一个UserControl,我放置了DataGrid,我希望能够执行dataGrid.DataSource = Books.GetBooks();之类的操作。

问题是intellisense没有获得.GetBooks(),我认为这是因为它是静态的,我想保持静态。我怎么能这样做,而且,这个电话的最佳地点在哪里?我假设在ascx的behing代码文件中对吗?

2 个答案:

答案 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。

相关问题