2017-03-25 3 views
0

J'ai rencontré ce problème lors de l'implémentation explicite de l'interface n à l'aide de Visual Studio. L'interface contient donc des propriétés, mais lorsque j'implémente la propriété explicitement dans une classe abstraite, le compilateur lance une erreur "Le modificateur 'public' n'est pas valide pour cet élément".Implémentation de l'interface n de façon explicite à l'aide de Visual Studio

Référer Ci-dessous le code donné.

interface ITest 
{ 
    bool MyProperty { get; set; } 
} 

internal class Test : ITest 
{ 
    public bool ITest.MyProperty 
    { 
     get 
     { 
      return false; 
     }  

     set { } 
    } 
} 
+1

Supprimez donc le modificateur 'public'. – MicroVirus

Répondre

0

Selon le programming guide, les implémentations d'interface explicites manquent toujours d'un modificateur d'accès. Vous devez supprimer le mot clé public.

Si vous y pensez, cela a beaucoup de sens. Il n'y a qu'un seul modificateur d'accès possible pour une implémentation d'interface explicite - le même modificateur utilisé pour l'interface. Ainsi, vous n'avez pas besoin de spécifier le modificateur.

Si l'interface est marquée public et que l'implémentation explicite est private, cela n'a aucun sens. La seule raison d'écrire une implémentation explicite est d'exposer ce membre uniquement à cette interface. Ce serait bizarre si le membre est moins accessible que l'interface, n'est-ce pas? Par contre, si l'interface est internal et que le membre est marqué public, cela n'aura aucun sens non plus. Si le membre est plus accessible que l'interface, il ne sera pas exposé uniquement à l'interface.

+0

Merci Sweeper. Vous l'avez très bien expliqué. Je l'ai! – Rahul