繁体   English   中英

C# 如何正确覆盖子 class 中的基数 class 属性?

[英]C# how to correctly override base class property in children class?

有人可以告诉我,孩子 class 如何正确覆盖父母 class 中声明的属性? 我正在尝试覆盖“任务”属性。 在孩子 class 中,它应该返回类型为“ICheckListTask”的项目列表。部分代码:

家长 class:

internal class CBaseTaskList : IBaseTaskList
{
    protected List<IBaseTask> _tasks = new List<IBaseTask>();

    virtual protected List<IBaseTask> Tasks
    {
        get { return _tasks; }
        set { _tasks = value; }
    }

    public virtual IBaseTask this[int index]
    {
        get { return Tasks[index]; }
        set { Tasks[index] = value; }
    }

    public virtual void Add(IBaseTask newTask)
    {
        Tasks.Add(newTask);
    }

儿童 class:

internal class CCheckListTaskList : CBaseTaskList, ICheckListTaskList
{
    override protected List<ICheckListTask> Tasks
    {
        get { return (List<ICheckListTask>)_tasks; }
        set { Tasks = value; }
    }

    public void WhereIsDone()
    {
        Tasks = new List<ICheckListTask>(Tasks.Where(x => x.IsDone == true));
    }

在儿童 class 中,我收到错误,什么类型的 CCheckListTaskList.Task 必须不是“List<ICheckListTask>”,而是“List<IBaseTask>”。 如何正确地做我想做的事?

我认为你应该使用“新”而不是“覆盖”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM