2013-07-14 34 views
0

我收到以下错误可访问性不一致

错误可访问性不一致:字段类型“Project3_MineSweeper.DB” 比场 “Project3_MineSweeper.Form2.db”

不易进入这里是DB.cs中的代码

class DB 
{ 
    private string connectionString; 

    public string ConnectionString 
    { 
     get { return connectionString; } 
    } 

    private SqlConnection connection; 

    public SqlConnection Connection 
    { 
     get { return connection; } 
    } 

    public DB() 
    { 
     connectionString="Data Source=NGFAJAR-PC\\FAJAR;Initial Catalog=DB;Integrated Security=True"; 
     connection = new SqlConnection(connectionString); 
    } 
} 

这是Form2.cs的代码

public partial class Form2 : Form 
{ 
    public DB db; //it's here where I am getting the error 

    private Form3 form3; 
    public Form2() 
    { 
     db = new DB(); 
     InitializeComponent(); 
    } 
    ... 
} 

最后,Form3.cs

public partial class Form3 : Form 
{ 
    private Form2 form2; 
    public Form3() 
    { 
     InitializeComponent(); 
    } 

    public void loadData() 
    { 
     DataTable dt = form2.db.GetData(); 
     dgvScore.DataSource = dt; 
    } 
} 

有什么不对?我应该怎么做才能解决它? 感谢您的关注和帮助。

回答

3

您需要声明class DBinternal class DBpublic class DB

+0

也许改变从'公共DB数据库领域;''到内部数据库DB;'。没有必要总是通过让事情更容易解决这个问题! –

+0

@JeppeStigNielsen当然 - 但考虑到提供的信息,答案是“公开”。更多信息可能会提示可访问性较低。很有可能,因为这些都是他处理的“形式”,所以他拥有“公共”的所有东西都可能是“内部”的。这似乎超出了这个问题的范围。 – Gjeltema

1

更改你喜欢DB类,以便

public class DB 
{ 
    .... 
} 
2

有什么不对?

DB类型被声明为class DB没有明确的访问修饰符。这可能是好的。然后,名称空间的直接成员(Project3_MineSweeper)的默认可访问性为internal。所以DB是一个internal类。

现在Form2public类。公共意味着任何人,即使在此“程序”之外的代码(本程序集)都可以看到Form2。现在Form2有一个字段db这也是public。所以db是公开课内部公开的,所以db可以从外面看到。但问题在于:程序之外的人甚至不知道有一种叫做Project3_MineSweeper.DB的类型。那么他们怎么能看到一个“秘密”类型的领域?这是不一致的。

我该怎么办才能修复它?

制作的通达性兼容,例如可以改变字段internal,所以:

public partial class Form2 : Form 
{ 
    internal DB db; 

    ... 
}