【问题标题】:How to solve the Error: Inconsistent accessibility: parameter type for generic c# interface?如何解决错误:不一致的可访问性:通用 c# 接口的参数类型?
【发布时间】:2013-05-07 13:44:48
【问题描述】:

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

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

【问题讨论】:

  • 邮件的哪一部分你不明白?
  • 仔细检查您正在使用的类的访问修饰符。
  • 表示公共项目使用私有类型。确保访问修饰符一致
  • @VJain:你能理解并解决这个问题吗?

标签: c#


【解决方案1】:

在不发布您的整个相关代码的情况下,我会尝试一下:

Childrendata 类被声明为非公开并且(如我们所见)变量 m_children 是公开的

因此,公共变量不能公开访问较少的类型,在这种情况下,Childrendata

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

【讨论】:

  • 清除引用的错误后会更清楚,因为原始问题是吞下&lt;&gt; 尖括号。
【解决方案2】:

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

由于List&lt;Childrendata&gt; m_children 是公开的,Childrendata 也需要公开。

Childrendata 更改为public 应该没问题。

【讨论】:

    【解决方案3】:

    Childrendata 不公开。那么,您希望调用addchild 的人能够提供所需的参数吗?

    明显的修复方法是更改​​addchildChildrendata 的可访问性。

    【讨论】:

      【解决方案4】:

      只需创建方法addChilde(List&lt;object&gt; childeren) 或仅对象不列出 然后这样做

      var Listchild = childeren as List<childe>;
      

      【讨论】:

        【解决方案5】:

        您不能两次使用访问修饰符。如果您使用公共类,则不应使用公共实例。 public partial class Record : ContentPage { List datas = new List() { 我使用记录类 public 但不是列表。

        【讨论】:

        • 您能否澄清一下您在回答中提出的问题的解决方案,因为目前还不是很清楚?
        • 你在用公共课吗?
        • 如果您使用公共类,则不要使用公共实例,只需创建没有访问修饰符的实例/对象。如果你想创建你的对象或实例 public 那么你必须创建你的类私有或没有访问修饰符。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-05
        • 1970-01-01
        • 1970-01-01
        • 2019-01-12
        • 1970-01-01
        • 1970-01-01
        • 2013-06-20
        相关资源
        最近更新 更多