我在理解訪問修飾符時遇到了一些麻煩;我想知道什麼時候使用什麼級別的訪問權限,特別是對於屬性 - 只需鏈接到好的關於該主題的教程可能是它自己的問題。將對象綁定到WinForms控件和訪問修飾符
但更具體地說,我不明白爲什麼綁定到WinForm控件的對象必須是公共的。所以我創造我的對象:
public class Foos : List<Foo>
{
}
public class Foo
{
private int bar;
public int Bar
{
get { return bar; }
set { bar = value; }
}
}
然後將其綁定到DataGridView
public partial class Form1 : Form
{
private Foos formFoos;
public Form1()
{
InitializeComponent();
formFoos = new Foos();
AddFoo();
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = formFoos;
}
/// <summary>
/// generate some test values
/// </summary>
private void AddFoo()
{
for (int i = 1; i <= 5; i++)
{
Foo foo = new Foo();
foo.Bar = 5 * i;
formFoos.Add(foo);
}
}
}
工作正常。但是如果我不想在我的組件外部暴露Foo.Bar
?如果我使它我得到一個空的dataGridView1。如果我做到了protected
我得到一個編譯器錯誤,因爲當然Form1不是從Foo派生的。
雖然我的程序中的窗體中的控件如何與internal的定義不匹配?
內部成員只能在同一個 程序集的文件中訪問。
關於如何以系統方式進行這些聲明的一般智慧也受到歡迎。
感謝您的明確解釋。我想我出於某種原因認爲一個屬性可以取代一個類訪問級別。 – downwitch 2012-02-29 00:09:07
這是令人困惑的,我同意。很高興你把它整理出來。 – AVIDeveloper 2012-03-01 15:06:05