C# 从子 class 访问受保护列表时出现问题

C# Problems acessing protected List from child class

我原以为我可以从子 class 访问父 class 中的受保护列表,但出现错误

Cannot access protected member “Liste.listItems” via a qualifier if type ‘Liste’, the qualifier must be of type ‘ListReader’

知道如何克服这个问题,同时仍然保持受保护 List<Object> listItems 的保护级别(这样除了继承的 class 之外没有其他 classes 可以访问此列表)吗?

 public class Liste
{
    public string name;
    protected List<Object> listItems = new List<Object>(); //TO DO: add protection
}

class ListReader : Liste
{

    public List<Liste> listsRead = new List<Liste>();

    public List<Liste> ReadLists(TestCaseWorkbook tcwb, string tab)
    {
        try
        {
            int lineID = 0;
            foreach (DataRow row in tcwb.Tables[tab].Rows)
            {
                if (lineID == 0)//first line
                {
                    foreach (DataColumn cell in tcwb.Tables[tab].Columns)
                    {
                        Liste liste = new Liste();
                        liste.name = ExcelWorkbook.CleanTitleToInternal(cell.ColumnName);
                        if(liste.name != "")
                        {
                            listsRead.Add(liste);
                        }                                                   
                    }
                    lineID++;
                }                 
                for (int j = 0; j < row.ItemArray.Length; j++)//rest of sheet
                {
                    Object item = row[j];
                    if(item.ToString() != "")
                    {
                        listsRead[j].listItems.Add(item);
                    }
                }                    
            }

(更多代码)

问题在listsRead[j].listItems.Add(item);

您已将字段设置为受保护,因此您无权在新的 class 实例中对其进行设置。我猜你只需要保护setter,所以改变这个

protected List<Object> listItems = new List<Object>();

进入

public List<Object> listItems { get; protected set; } = new List<Object>();

如果您既不使用 'name' 也不使用 'listItems'

,则无需继承 Liste