如何解决错误:可访问性不一致:通用c#接口的参数类型?

时间:2013-05-07 13:44:49

标签: c#

在将此代码写入我的项目时,我收到错误

  

错误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
            }

5 个答案:

答案 0 :(得分:27)

如果不发布您的相关代码,我会试着预感:

Childrendata 被声明为非公开,并且(我们可以看到)变量 m_children 是公开的

因此公共变量无法公开不太容易访问的类型,在这种情况下, Childrendata

此外,您可能想要的是将 m_children 设为私​​有,这通常是最佳做法

答案 1 :(得分:6)

我的猜测是Childrendata类是private(或internal,或隐含internal,未指定可见性修饰符)

由于List<Childrendata> m_children是公开的,Childrendata也需要公开。

Childrendata更改为public,您应该没问题。

答案 2 :(得分:2)

Childrendata不公开。那么,您是否希望有人呼叫addchild能够提供所需的参数?

明显的修复方法是更改​​addchildChildrendata的辅助功能。

答案 3 :(得分:0)

只需创建方法addChilde(List<object> childeren)或仅列出对象 然后这样做

var Listchild = childeren as List<childe>;

答案 4 :(得分:0)

您不能两次使用访问修饰符。如果您使用public类,则不应使用实例public。公共部分类Record:ContentPage {列表数据=新List(){我使用记录类public而不是list。