我以为我可以从子类访问父类中的受保护列表,但是会收到错误
如果类型为“Liste”,则无法通过限定符访问受保护成员“Liste.listItems”,限定符必须是“ListReader”类型
知道如何在保持受保护List<Object> listItems
的保护级别的同时克服这个问题(除了继承的类之外没有其他类可以访问此列表)?
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);
答案 0 :(得分:2)
您对字段进行了保护,因此您无权在新的类实例中进行设置。我想你只需要保护setter,所以改变这个
protected List<Object> listItems = new List<Object>();
到
public List<Object> listItems { get; protected set; } = new List<Object>();
如果你既不使用'name'也不使用'listItems',你不需要从Liste继承