Как решить проблему: Непоследовательная доступность: тип параметра для общего интерфейса С#?
При написании этого кода в моем проекте я получаю сообщение об ошибке
Ошибка 1 Несогласованная доступность: тип поля 'System.Collections.Generic.List<Jain_milan.Childrendata>'
менее доступен, чем поле 'Jain_milan.addchild.m_children'
Ошибка 2 Несогласованная доступность: тип параметра 'System.Collections.Generic.List<Jain_milan.Childrendata>'
менее доступен, чем метод 'Jain_milan.addchild.addchild(System.Collections.Generic.List<Jain_milan.Childrendata>)'
namespace Jain_milan
{
public partial class addchild : Form
{
List<Label> label = new List<Label>();
List<TextBox> textbox = new List<TextBox>();
List<ComboBox> combobox = new List<ComboBox>();
List<DateTimePicker> datetimepicker = new List<DateTimePicker>();
public List<Childrendata> m_children = new List<Childrendata>();
public addchild(List<Childrendata> children)
{
InitializeComponent();
this.m_children = children; //Initialize the same List as sent by Mainform
}
Ответы
Ответ 1
Не публикуя весь соответствующий код, я попробую предсказать:
класс Childrendatastrong > объявлен как непубличный и (как мы видим) переменная m_children является общедоступной
Прежде чем публичная переменная не сможет открыть менее доступный тип, в этом случае Childrendatastrong >
Кроме того, вы можете захотеть превратить m_children в частную, а это, как правило, самая лучшая практика.
Ответ 2
Я предполагаю, что класс Childrendata
private
(или internal
или неявно internal
, не указав модификатор видимости)
Поскольку List<Childrendata> m_children
является общедоступным, Childrendata
также должен быть общедоступным.
Измените Childrendata
на public
, и все будет в порядке.
Ответ 3
Childrendata
не является общедоступным. Как же вы ожидаете, что кто-то позвонит addchild
, чтобы предоставить требуемый параметр?
Очевидными исправлениями являются изменение доступности addchild
или Childrendata
.
Ответ 4
просто введите метод addChilde(List<object> childeren)
или только объект не список
то сделайте это
var Listchild = childeren as List<childe>;