使用泛型列表无法填充DataGridView

3
我不太理解以下简单代码的问题。它只是接收一个列表并在datagridview中显示。这是我得到的错误信息:

Error 1 Inconsistent accessibility: return type 'System.Collections.Generic.List' is less accessible than method 'WindowsFormsApplication10.Form1.FillGridView()'

此外,有没有一种方法将您的列表、arraylist等转换为数据集类型?

public partial class Form1 : Form
    {
    public Form1 ()
    {
        InitializeComponent ();
    }

    public List<Student> FillGridView ()
    {
        List<Student> l = new List<Student> ();
        l.Add (new Student { Fname="bloke", Lname="lll", Contact=293489485});
        l.Add (new Student { Fname = "dog", Lname = "assdf", Contact = 35345 });
        l.Add (new Student { Fname = "mary", Lname = "sdff", Contact = 6456 });
        l.Add (new Student { Fname = "john", Lname = "sdfsdf", Contact = 45656 });
        return l;


    }


    private void Form1_Load ( object sender, EventArgs e )
    {
        dataGridView1.DataSource = this.FillGridView ();
    }

    private void button1_Click ( object sender, EventArgs e )
    {

    }
}

4
注意:你的方法被命名为“FillGridView”,所以我期望它可以填充一个网格视图。但实际上它并没有这样做。你可能需要找到一个更合适的名称(比如“CreateStudentList”之类)来描述它的行为。 - nvoigt
4
你的Student类是私有/受保护的吗? - Lojko
你能分享一下你的 Student 类吗? - Arshad
2个回答

2

你的方法需要公开吗?看起来你的学生类不是公共的,所以将其列表返回给任何公共调用者是不一致的。就目前而言,你的方法可以是私有的。

private List<Student> FillGridView()

0

你的 Student 类的访问修饰符可能是 非公共的

对于一个 非公共的 类型的 public 方法来说是没有意义的。这个方法怎么能够在外部程序集中工作呢?

你可以将你的 FillGridView 访问修饰符改为 private

private List<Student> FillGridView ()

访问修饰符阅读更多信息

来自C#语言规范

10.3.6 成员的组成类型

在成员声明中使用的类型称为该成员的组成类型。可能的组成类型包括常量、字段、属性、事件或索引器的类型,方法或运算符的返回类型以及方法、索引器、运算符或实例构造函数的参数类型。成员的组成类型必须至少与该成员本身一样可访问(§3.5.4)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接