c#可访问性不一致的单例错误
本文关键字:单例 错误 不一致 访问 | 更新日期: 2023-09-27 17:52:13
我有这个代码,它意味着是一个单例表单弹出并保持向上,然后追加(基本上我有多线程,可以给用户查询,我不想要一个堆栈,我想要一个弹出然后"继续填充")我只是设置了一个基本的测试用例类来检查逻辑,但我得到了这个错误,我不理解
错误: Error 2 Inconsistent accessibility: field type 'System.Collections.Generic.List<ActionType>' is less accessible than field 'frmVerdict.thingsToDo'
代码:public partial class frmVerdict : Form
{
public List<ActionType> thingsToDo = new List<ActionType>();
private int elementCounter = 0;
private static frmVerdict _instance;
public frmVerdict()
{
InitializeComponent();
}
public static frmVerdict GetInstance()
{
if (_instance == null) _instance = new frmVerdict();
return _instance;
}
public void addAction(ActionType action)
{
elementCounter++;
TextBox txtbx = new TextBox(); //TextBox txtbx = (TextBox)Controls["txtbx0001"];
txtbx.Text = action.name;
txtbx.Name = "txtbx" + elementCounter.ToString().PadLeft(4, '0');
txtbx.Location = new Point(10, 30 * elementCounter);
txtbx.Height = 20;
txtbx.Width = 50;
pnlVerdict.Controls.Add(txtbx); //these textboxes will be replaced by buttons
thingsToDo.Add(action);
}
}
这是我如何调用它(这不是问题,但我想让人们知道为什么我做单例)
frmVerdict form = frmVerdict.GetInstance();
if (!form.Visible)
{
form.Show();
}
else
{
form.BringToFront();
}
form.addAction(action);
您的ActionType
类型要么声明为internal
,要么没有可访问性修饰符,在这种情况下,默认为internal
。
解决方案是显式地使其成为public
或使任何公开ActionType
的公共类型的成员成为内部的。
进一步阅读
- 访问修饰符(c#编程指南)
你需要将类ActionType设为公共,因为类frmVerdict至少有一个公共方法将ActionType作为参数