C#如何正确地覆盖儿童班级中的基类财产?

发布于 2025-01-29 00:15:30 字数 1098 浏览 2 评论 0原文

有人可以告诉我吗,在儿童课上,如何正确地覆盖父母班级的财产? 我正在尝试覆盖“任务”属性。在子类中,它应该返回类型“ iChecklistTask”项目的列表。代码:

父母类:

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

子类:子类:

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

在儿童级别I中获得错误的cchecklisttasklist.task必须不是“ list&lt; ichecklisttask” ; ibasetask&gt;“。 如何正确地做我想做的事?

Could somebody tell me please, how in children class correctly override property declared in parent class?
I am trying to override "Tasks" property. In child class it should return list of items of type "ICheckListTask".Part of code:

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

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

In children class I get error what type of CCheckListTaskList.Task must be not "List<ICheckListTask>", but "List<IBaseTask>".
How to correctly do what I want to do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡淡绿茶香 2025-02-05 00:15:30

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

I think you should use "new" instead of "override"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文