C# Как ссылаться на реализацию интерфейса по умолчанию в классе разработчика [дубликат]

0

Вопрос

Рассмотрим следующий интерфейс с реализацией по умолчанию TestMethod

public interface TestInterface
{
    public int TestMethod()
    {
        return 15;
    }
}

Зовущий TestMethod в следующем классе вызовет исключение StackOverflowException:

public class TestClass : TestInterface
{
    public int TestMethod()
    {
        return 1 + (this as TestInterface).TestMethod();
    }
}

Теперь я понимаю, почему это так, но есть ли какой-нибудь способ обойти это? Что-то вроде base.TestMethod() для ссылки на один из реализованных интерфейсов класса?

Я знаю, что мог бы переименовать метод в TestInterface и ссылаться на него таким образом в TestClass, но это вызвало бы проблемы для других классов, которым не нужно ссылаться на реализацию по умолчанию.

c# default-implementation interface
2021-11-22 18:03:54
1
-1

вам нужно использовать "публичное переопределение", чтобы сделать то, о чем вы просите.

2021-11-22 18:23:25

Не могли бы вы, пожалуйста, дополнить свой ответ конкретным фрагментом кода и более подробным описанием.
Mario Petrovic

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................