Сокрытие методов. Делаю библиотеку классов (.net core). Суть в следующем. У меня есть базовый класс в котором определены некоторые методы. Мне нужно чтобы в дочернем классе эти методы скрывались и были недоступны.
Когда я делал обычную библиотеку классов, я просто писал private new. Но с net core не работает.
В базовом A классе я пишу
public void Method(){//тело метода}
В дочернем B классе пишу
private new void Method(){//тело метода}
Затем в консольном приложении в переменной класса B мне доступен этот метод и при выполнении программы он отрабатывает метод базового класса.
Как мне скрыть методы? Не смог найти такой вопрос на форуме.
Такое "скрытие" не работает ни в обычном .NET, и в .NET Core.
Методы, объявленные в базовом классе, скрыть нельзя. Если бы было можно - то объект-наследник все равно можно было бы привести к базовому классу и вызвать у него "скрытый" метод.
Следующий код работает компилируется без ошибок и в Core, и в не .Core версиях:
class A
{
public void Method(){ }
}
class B : A
{
private new void Method(){ }
}
class Program
{
static void Main(string[] args)
{
B b = new B();
b.Method(); // вызывается A.Method по ссылке на B
A a = new B();
a.Method(); // вызывается A.Method по ссылке типа A на объект типа B
}
}
Скорее всего вы ищите модификатор internal
который ограничивает область видимости сборкой в которой объявлен класс.
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/internal
internal
методы публичны для классов внутри библиотеки, но из консольного приложения, использующего эту библиотеку, метод доступен не будет.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Задача проста - управлять службой звукаКогда надо включить\выключить