Bonjour,

est-il possible de faire en sorte qu'une méthode "virtual" à un certain niveau d'une hiérarchie de classe ne le soit plus à partir d'un autre niveau ?

Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Test
{
        class A
        {
                public virtual void f()
                {
                        System.Console.WriteLine("A");
                }
        }
        class B : A
        {
                public override void f()
                {
                        System.Console.WriteLine("B");
                }
        }
        class C : B
        {
                public override void f()
                {
                        System.Console.WriteLine("C");
                }
        }
        static void Main()
        {
                A a = new C();
                B b = new C();
                C c = new C();
                a.f();
                b.f();
                c.f();
        }
}
La classe "C" peut overrider "f" et donc l'appel "c.f()" est polymorphe.

Comment faire en sorte que "C.f" ne puisse pas overrider "f", et que donc l'appel "c.f()" invoque en fait "B.f" ?

Merci.