У меня есть 3 уровня классов.
TopClass
MiddleClass
BottomClass
А MiddleClass
является производным от TopClass
и BottomClass
является производным от MiddleClass
.
Я хочу иметь свойство в TopClass
, которое может быть доступно только с TopClass
и MiddleClass
, а не с BottomClass
.
Поскольку я использую protected
модификатор доступа, защищенное свойство в TopClass
доступно из BottomClass
.
Вот мои уроки, чтобы лучше понять.
public class TopClass
{
private string ThisIsOnlyAccessibleForTopClass { get; set; }
protected string ThisIsOnlyAccessibleForTopClassAndMiddleClass { get; set; } // I want this to be accessible only by the MiddleClass
public string AccessibleFromEverywhere { get; set; } // this is good as it is public so accessible everywhere
public virtual void SomeWeirdFunction()
{
ThisIsOnlyAccessibleForTopClass = "I can access this here as it is grand father's private member!";
}
}
public class MiddleClass : TopClass
{
public override void SomeWeirdFunction()
{
base.ThisIsOnlyAccessibleForTopClassAndMiddleClass = "As this is a MiddleClass class, I am accessible here.. That is good!";
}
}
public class BottomClass : MiddleClass
{
public override void SomeWeirdFunction()
{
base.ThisIsOnlyAccessibleForTopClassAndMiddleClass = "I don't want this to be accessible here!";
}
}
Я хочу, чтобы ThisIsOnlyAccessibleForTopClassAndMiddleClass
был доступен только из MiddleClass
и TopClass
, а не из BottomClass
.
Как я могу это сделать? И поскольку я не могу сделать это с существующими модификаторами доступа, такими как protected
, public
, internal
, private
et c .. это признак того, что я пытаюсь нарушить какое-то правило здесь?