C# 中有没有办法防止派生类继承 protected 属性?

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

class DerivedA : Base
{
}

class DerivedB : DerivedA
{
}

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

最佳答案

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

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



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

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

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

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

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

10-17 02:05