Как в .Net Core (c#) скрывать методы базового класса

300
17 ноября 2017, 05:36

Сокрытие методов. Делаю библиотеку классов (.net core). Суть в следующем. У меня есть базовый класс в котором определены некоторые методы. Мне нужно чтобы в дочернем классе эти методы скрывались и были недоступны.

Когда я делал обычную библиотеку классов, я просто писал private new. Но с net core не работает.

В базовом A классе я пишу

public void Method(){//тело метода}

В дочернем B классе пишу

private new void Method(){//тело метода}

Затем в консольном приложении в переменной класса B мне доступен этот метод и при выполнении программы он отрабатывает метод базового класса.

Как мне скрыть методы? Не смог найти такой вопрос на форуме.

Answer 1

Такое "скрытие" не работает ни в обычном .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
    }
}
Answer 2

Скорее всего вы ищите модификатор internal который ограничивает область видимости сборкой в которой объявлен класс. https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/internal

internal методы публичны для классов внутри библиотеки, но из консольного приложения, использующего эту библиотеку, метод доступен не будет.

READ ALSO
Как получить заголовки или куки в awesomium?

Как получить заголовки или куки в awesomium?

Пробовал через javaScript получить куки

374
Какой метод лучше использовать?

Какой метод лучше использовать?

Задача проста - управлять службой звукаКогда надо включить\выключить

272
Не рабоатет Threadpool в Xamarin?

Не рабоатет Threadpool в Xamarin?

Не рабоатет Threadpool в Xamarin,как это можно пофиксить

279
найти примеры кода на C#

найти примеры кода на C#

как открыть примеры начального уровня по C# на Visual Studio 2013?

275