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);

c#可访问性不一致的单例错误

您的ActionType类型要么声明为internal,要么没有可访问性修饰符,在这种情况下,默认为internal

解决方案是显式地使其成为public或使任何公开ActionType的公共类型的成员成为内部的。

进一步阅读

  • 访问修饰符(c#编程指南)

你需要将类ActionType设为公共,因为类frmVerdict至少有一个公共方法将ActionType作为参数