C#中是否有一种方法可以防止派生类继承受保护的属性?
class Base
{
protected int A { get; set; }
}
class DerivedA : Base
{
}
class DerivedB : DerivedA
{
}
我想要的是让DerivedA能够访问属性A,但是DerivedB不能.那么,有没有办法在继承层次结构的中间限制属性的继承呢?
解决方法:
好吧,评论中有一些有价值的信息,所以我认为最好重述一下,以免丢失.
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或更高版本中可用.
虽然我同意凯文(Kevin)的观点,但这可能是对您问题的直接答案,但HimBromBeere建议该问题实际上是XYProblem-意味着您正在询问如何实施遇到问题的解决方案,而不是询问如何解决问题.潜在的问题.
我也同意他的看法.
Fildor建议使用composition over inheritance-这是非常好的一点.仅将继承用于代码重用是一个错误.请记住,派生类是基类类型的特定类型-例如,狗可以从动物派生,因为狗是动物的特定类型,但是飞机不能仅由于它们都具有引擎而从汽车派生.
为了获得实际潜在问题的答案,我建议您编辑问题以包括该问题,不仅包括您要实施的当前解决方案,或者可以提出全新的问题.