如何解决错误:不一致的可访问性:通用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
}
在不发布整个相关代码的情况下,我将尝试一个预感:
类Childrendata被声明为非公共的,(我们可以看到)变量m_children是公共的
因此,公共变量不能公开较难访问的类型,在本例中,Childrendata
此外,您可能需要将m_children转为private,这通常是最佳实践我猜Childrendata
类是private
(或internal
,或隐式internal
,不指定可见性修饰符)
由于List<Childrendata> m_children
是公共的,Childrendata
也需要是公共的。
将Childrendata
更改为public
,应该没问题。
Childrendata
不公开。那么,您如何期望调用addchild
的人能够提供所需的参数呢?
明显的修复是改变addchild
或Childrendata
的可访问性
将方法设置为addChilde(List<object> childeren)
或唯一对象而不是列表然后按
var Listchild = childeren as List<childe>;
访问修饰符不能使用两次。如果您使用了公共类,那么就不应该使用公共实例。public partial class Record: ContentPage {List data = new List(){我使用public而不是List .