C# 如何解决不一致的可访问性:此场景中的参数类型错误?
请看注释 这是我得到的错误: 错误1可访问性不一致:参数类型“PSObyEssaKhan.tblLogin”的可访问性不如方法“PSObyEssaKhan.main menu.main menu(bool,PSObyEssaKhan.tblLogin)”F:\C#2016-PROTOTYPE\V21登录完成\PSObyEssaKhan\PSObyEssaKhan\main menu.cs 14 16 PSObyEssaKhanC# 如何解决不一致的可访问性:此场景中的参数类型错误?,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
我如何解决这个问题?将您的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是一个类,我试图使代码尽可能相关,因此我将其删减,如果混淆了,很抱歉。谢谢,将其公开完成了这项工作。但是,将其内部化仍然会产生相同的错误。它来自不同的类库或项目吗?不,它在同一个项目和类中。谢谢,将其公开做了这项工作。但是,将其设置为内部仍然会产生相同的错误。它来自不同的类库或项目吗?不,它位于同一个项目和类中。