gpt4 book ai didi

c# - 防止继承成员访问 protected 成员

转载 作者:行者123 更新时间:2023-11-30 15:15:14 25 4
gpt4 key购买 nike

在 C# 中有没有一种方法可以防止派生类继承 protected 属性?

class Base
{
protected int A { get; set; }
}

class DerivedA : Base
{
}

class DerivedB : DerivedA
{
}

我想要的是 DerivedA 能够访问属性 A,但 DerivedB 不应该。那么有没有办法在继承层次的中间限制一个属性的继承呢?

最佳答案

嗯,评论里有一些有值(value)的信息,所以我想我最好重述一下,以免丢失。

Kevin Gosse建议使用 private protected访问修饰符。

The private protected keyword combination is a member access modifier. A private protected member is accessible by types derived from the containing class, but only within its containing assembly.

请注意,此访问修饰符仅适用于 c# 7.2 或更高版本。

虽然我同意凯文的观点,但这可能是对您问题的直接回答,HimBromBeere建议这个问题实际上是一个 XYProblem - 这意味着您在询问如何实现遇到问题的解决方案,而不是询问如何解决根本问题。
我也同意他的看法。

Fildor建议使用 composition over inheritance - 这是一个很好的观点。仅将继承用于代码重用是错误的。请记住,派生类是基类类型的特定类型——例如,狗可以派生自动物,因为狗是一种特定类型的动物,但飞机不能派生自汽车,因为它们都有引擎.

要获得实际潜在问题的答案,我建议您编辑您的问题以包括该问题,而不仅仅是您正在尝试实现的当前解决方案,或者改为提出一个全新的问题。

关于c# - 防止继承成员访问 protected 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52811154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com