Параметр менее доступен, чем метод

Я пытаюсь передать список из одного класса формы в другой. Здесь код:

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>)'

Ответы

Ответ 1

Вы должны объявить Branch общедоступным:

public class Branch {
  . . . 
}

Ответ 2

Как говорится в сообщении об ошибке, тип всех параметров метода должен быть как минимум таким же доступным, как и сам метод.

Вам нужно сделать класс Branch общедоступным, если вы используете его как параметр в общедоступном методе.

public class Branch { .... } 
^^^^^^

В качестве альтернативы вы можете изменить свой метод как internal вместо public.

internal BranchOverview(List<Branch> myArgus)
^^^^^^^^

Ответ 3

По умолчанию поля класса private, если не существует access modifier...

Ответ 4

Конструктор BranchOverview равен public, что означает, что все типы, включенные в его список формальных параметров, также должны быть public. Скорее всего, вы не указали спецификацию доступности для Branch, т.е. Вы написали

class Branch { ... }

что означает, что Branch есть internal.

Ответ 5

Изменить:

List<Branch> myArgus = new List<Branch>();

чтобы быть общедоступным.