C# 如何解决不一致的可访问性:此场景中的参数类型错误?

C# 如何解决不一致的可访问性:此场景中的参数类型错误?,c#,parameters,C#,Parameters,请看注释 这是我得到的错误: 错误1可访问性不一致:参数类型“PSObyEssaKhan.tblLogin”的可访问性不如方法“PSObyEssaKhan.main menu.main menu(bool,PSObyEssaKhan.tblLogin)”F:\C#2016-PROTOTYPE\V21登录完成\PSObyEssaKhan\PSObyEssaKhan\main menu.cs 14 16 PSObyEssaKhan 我如何解决这个问题?将您的tblLogin类公开 例如: publi

请看注释

这是我得到的错误:

错误1可访问性不一致:参数类型“PSObyEssaKhan.tblLogin”的可访问性不如方法“PSObyEssaKhan.main menu.main menu(bool,PSObyEssaKhan.tblLogin)”F:\C#2016-PROTOTYPE\V21登录完成\PSObyEssaKhan\PSObyEssaKhan\main menu.cs 14 16 PSObyEssaKhan


我如何解决这个问题?

将您的tblLogin类公开

例如:

public partial class Login : Form
{

    foreach (DataRow rowtab in obtainData.dataSetWithDB.Tables[0].Rows) //Looping through each row 1 by 1
    {
        tblLogin loginDetails = StoreloginDetailsToPassAroundForms(rowtab);
        if (txtDisplay.TextLength == 4 && rowtab["managerAccount"].ToString() == "No" && getInfoFromSelectedCell(DataGridLoginID) == rowtab["userName"].ToString() && txtDisplay.Text == rowtab["userPIN"].ToString())
        {

            MainMenu nextForm = new MainMenu(false, loginDetails); //The issue is with the 'loginDetails' parametre that I am passing to the MainMenu form constructor, how do I solve this?
            nextForm.Show();
        }

    }
    private tblLogin StoreloginDetailsToPassAroundForms(DataRow row)
    {
        tblLogin loginDetails = new tblLogin();

        loginDetails.ManagerAccount = row["managerAccount"].ToString();
        loginDetails.UserName = row["userName"].ToString();
        loginDetails.StaffName = row["staffName"].ToString();
        loginDetails.UserID = Convert.ToInt32(row["userID"]);

        return loginDetails;
    }

}



public partial class MainMenu : Form
{
    public MainMenu(bool WaiterAccount, tblLogin loginDetails)
    {
        InitializeComponent();

        if (WaiterAccount == false)
        {
            btnMenuMang.Hide();
            btnEmployeeMang.Hide();
            btnSystemMang.Hide();
        }

        txtName.Text = loginDetails.StaffName;
    }
}

那么您将不会得到此异常

将您的tblLogin类公开

例如:

public partial class Login : Form
{

    foreach (DataRow rowtab in obtainData.dataSetWithDB.Tables[0].Rows) //Looping through each row 1 by 1
    {
        tblLogin loginDetails = StoreloginDetailsToPassAroundForms(rowtab);
        if (txtDisplay.TextLength == 4 && rowtab["managerAccount"].ToString() == "No" && getInfoFromSelectedCell(DataGridLoginID) == rowtab["userName"].ToString() && txtDisplay.Text == rowtab["userPIN"].ToString())
        {

            MainMenu nextForm = new MainMenu(false, loginDetails); //The issue is with the 'loginDetails' parametre that I am passing to the MainMenu form constructor, how do I solve this?
            nextForm.Show();
        }

    }
    private tblLogin StoreloginDetailsToPassAroundForms(DataRow row)
    {
        tblLogin loginDetails = new tblLogin();

        loginDetails.ManagerAccount = row["managerAccount"].ToString();
        loginDetails.UserName = row["userName"].ToString();
        loginDetails.StaffName = row["staffName"].ToString();
        loginDetails.UserID = Convert.ToInt32(row["userID"]);

        return loginDetails;
    }

}



public partial class MainMenu : Form
{
    public MainMenu(bool WaiterAccount, tblLogin loginDetails)
    {
        InitializeComponent();

        if (WaiterAccount == false)
        {
            btnMenuMang.Hide();
            btnEmployeeMang.Hide();
            btnSystemMang.Hide();
        }

        txtName.Text = loginDetails.StaffName;
    }
}

那么您将不会得到此异常

什么是
tblLogin
?您还缺少一些代码,在
Login
中没有任何方法可以绕过
foreach
循环。tblLogin是一个类,我试图使代码尽可能相关,因此我将其删减,如果混淆了,很抱歉。什么是
tblLogin
?您还缺少一些代码,在
Login
中没有任何方法可以绕过
foreach
循环。tblLogin是一个类,我试图使代码尽可能相关,因此我将其删减,如果混淆了,很抱歉。谢谢,将其公开完成了这项工作。但是,将其内部化仍然会产生相同的错误。它来自不同的类库或项目吗?不,它在同一个项目和类中。谢谢,将其公开做了这项工作。但是,将其设置为内部仍然会产生相同的错误。它来自不同的类库或项目吗?不,它位于同一个项目和类中。