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

本文关键字:访问 通用 类型 参数 接口 不一致 何解决 解决 错误 | 更新日期: 2023-09-27 18:12:23

在编写此代码到我的项目我得到的错误

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

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

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

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

因此,公共变量不能公开较难访问的类型,在本例中,Childrendata

此外,您可能需要将m_children转为private,这通常是最佳实践

我猜Childrendata类是private(或internal,或隐式internal,不指定可见性修饰符)

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

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

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

明显的修复是改变addchildChildrendata的可访问性

将方法设置为addChilde(List<object> childeren)或唯一对象而不是列表然后按

var Listchild = childeren as List<childe>;

访问修饰符不能使用两次。如果您使用了公共类,那么就不应该使用公共实例。public partial class Record: ContentPage {List data = new List(){我使用public而不是List .