C# Comment de référence par défaut de l'interface de mise en œuvre de responsable de l'implémentation de la classe [dupliquer]

0

La question

Considérez les points suivants de l'interface, avec une valeur par défaut de mise en œuvre de TestMethod

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

L'appel TestMethod dans la classe suivante sera la cause d'une StackOverflowException:

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

Maintenant, je comprends pourquoi il en est, mais est-il un moyen de le contourner? Quelque chose comme base.TestMethod() pour le référencement de la classe de mise en œuvre des interfaces?

Je sais que je pourrais renommer la méthode dans TestInterface et de référence dans TestClass de cette façon, mais cela pourrait provoquer des problèmes pour les autres classes qui n'ont pas besoin de faire référence à la valeur par défaut de mise en œuvre.

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

vous devez utiliser "public override" pour faire ce que vous demandez.

2021-11-22 18:23:25

Pourriez-vous préciser votre réponse avec un béton extrait de code et plus de description.
Mario Petrovic

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................