Ответ 1
Вы должны объявить Branch
общедоступным:
public class Branch {
. . .
}
Я пытаюсь передать список из одного класса формы в другой. Здесь код:
List<Branch> myArgus = new List<Branch>();
private void btnLogin_Click(object sender, EventArgs e)
{
// Get the selected branch name
string selectedBranch = lbBranches.SelectedItem.ToString();
for (int i = 0; i < myArgus.Count; i++)
{
if (myArgus[i]._branchName == selectedBranch)
{
// Open the BranchOverview form
BranchOverview branchOverview = new BranchOverview(myArgus[i]);
branchOverview.Show();
}
else
{
// Branch doesn't exist for some reason
}
}
}
И затем в моем классе BranchOverview
:
List<Branch> branch = new List<Branch>();
public BranchOverview(List<Branch> myArgus)
{
InitializeComponent();
branch = myArgus;
}
Когда я запускаю код, я получаю эту ошибку:
Inconsistent accessibility: parameter type 'System.Collections.Generic.List<Argus.Branch>' is less accessible than method 'Argus.BranchOverview.BranchOverview(System.Collections.Generic.List<Argus.Branch>)'
Вы должны объявить Branch
общедоступным:
public class Branch {
. . .
}
Как говорится в сообщении об ошибке, тип всех параметров метода должен быть как минимум таким же доступным, как и сам метод.
Вам нужно сделать класс Branch
общедоступным, если вы используете его как параметр в общедоступном методе.
public class Branch { .... }
^^^^^^
В качестве альтернативы вы можете изменить свой метод как internal
вместо public
.
internal BranchOverview(List<Branch> myArgus)
^^^^^^^^
По умолчанию поля класса private
, если не существует access modifier
...
Конструктор BranchOverview
равен public
, что означает, что все типы, включенные в его список формальных параметров, также должны быть public
. Скорее всего, вы не указали спецификацию доступности для Branch
, т.е. Вы написали
class Branch { ... }
что означает, что Branch
есть internal
.
Изменить:
List<Branch> myArgus = new List<Branch>();
чтобы быть общедоступным.