Модификатор protected internal в C#
Модификатор protected internal в C# означает доступ по правилу «или»: член
виден наследникам (в том числе из другой сборки) и любому коду той же
сборки, даже без наследования. Это шире, чем private protected,
где нужны оба условия сразу.
Наследник читает поле базы, а посторонний тип в том же проекте - через
экземпляр Base. Оба вызова выведут 7. Из другой сборки это поле
увидел бы только наследник. В примере оба вызова идут внутри одного проекта:
var d = new Derived();
Console.WriteLine(d.Show());
Console.WriteLine(new Reader().Peek());
class Base
{
protected internal int Id = 7;
}
class Derived : Base
{
public int Show() => Id;
}
class Reader
{
public int Peek() => new Base().Id;
}
Сделайте у двери скрытый код 42 и верните его публичным методом наследника.
Прочитайте код 42 из соседнего класса в том же проекте, не наследуя дверь.