Partager via


Erreur du compilateur CS1540

Mise à jour : novembre 2007

Message d'erreur

Impossible d'accéder au membre protégé 'membre' par l'intermédiaire d'un qualificateur de type 'type1' ; le qualificateur doit être de type 'type2' (ou dérivé de celui-ci)
Cannot access protected member 'member' via a qualifier of type 'type1'; the qualifier must be of type 'type2' (or derived from it)

Bien qu'une classe dérivée puisse accéder aux membres protégés de sa classe de base, elle ne peut pas le faire par l'intermédiaire d'une instance de la classe de base.

L'exemple suivant génère l'erreur CS1540 :

// CS1540.cs
public class Base
{
   protected void func()
   {
   }
}

public class Derived : Base
{
   public static void test(Base anotherInstance)
   // the method declaration could be changed as follows
   // public static void test(Derived anotherInstance)
   {
      anotherInstance.func();   // CS1540
   }
}

public class Tester : Derived
{
   public static void Main()
   {
      Base pBase = new Base();
      // the allocation could be changed as follows
      // Derived pBase = new Derived();
      test(pBase);
   }
}