C#接口继承覆盖

发布于 2025-01-25 19:52:14 字数 920 浏览 5 评论 0原文

我对基本接口属性隐藏的困惑感到困惑,在实现的类中仍然需要什么,有人可以告诉我为什么吗?

目标将是“ EndClass”仅隐藏/覆盖“ ICLASSVALUE值”,而不需要实现已经隐藏的“ IbaseclassValue值”。

谢谢!

public interface IBaseClassValue { }

public interface IClassValue : IBaseClassValue { }

public class ClassValue : IClassValue { }

//-----------------------------------------

public interface IEndClassBase
{
    IBaseClassValue Value { get; set; }
}

public interface IEndClassBaseChild : IEndClassBase
{
    new IClassValue Value { get; set; }
}

//-----------------------------------------

public abstract class EndClassAbs<TValue>
{
    TValue Value { get; set; }
}

public class EndClass : EndClassAbs<ClassValue>, IEndClassBaseChild
{
    public new IClassValue Value { get; set; }

    //IBaseClassValue IEndClassBase.Value { get; set; } //-> Why need here the base member while already hide in the 'IEndClassBaseChild' interface
}

I confused about a base interface property hiding, what is still needed in the implemented class, can somebody tell me why?

The goal will be the 'EndClass' only hide/override the 'IClassValue Value', and not need to implement the already hide 'IBaseClassValue Value'.

Thanks!

public interface IBaseClassValue { }

public interface IClassValue : IBaseClassValue { }

public class ClassValue : IClassValue { }

//-----------------------------------------

public interface IEndClassBase
{
    IBaseClassValue Value { get; set; }
}

public interface IEndClassBaseChild : IEndClassBase
{
    new IClassValue Value { get; set; }
}

//-----------------------------------------

public abstract class EndClassAbs<TValue>
{
    TValue Value { get; set; }
}

public class EndClass : EndClassAbs<ClassValue>, IEndClassBaseChild
{
    public new IClassValue Value { get; set; }

    //IBaseClassValue IEndClassBase.Value { get; set; } //-> Why need here the base member while already hide in the 'IEndClassBaseChild' interface
}

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

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

发布评论

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

评论(1

一枫情书 2025-02-01 19:52:14

如果我使用Shadow类“ _EndClass”的某种态度,然后从中继承,则“ EndClass”可以隐藏/覆盖“ ClassValue”。我仍然不知道为什么这不能一步一步。

public class _EndClass : EndClassAbs<ClassValue>, IEndClassBase
{
    public new IBaseClassValue Value { get; set; }
}

public class EndClass : _EndClass, IEndClassBaseChild
{
    public new IClassValue Value { get; set; }
}

If I use somekind of shadow class '_EndClass' then inherit from it, the 'EndClass' could hide/override the 'ClassValue'. I still don't know why this can not do in one step.

public class _EndClass : EndClassAbs<ClassValue>, IEndClassBase
{
    public new IBaseClassValue Value { get; set; }
}

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