3 votes

C# explicit declare member interface

Comment déclarer de manière explicite un membre d'une interface ?.i.e :

    public interface IPerfil
    {
        int IDPerfil
        {
            get;
            set;
        }
        int IDMarca
        {
            get;
            set;
        }
        int IDRegional
        {
            get;
            set;
        }
        int IDFilial
        {
            get;
            set;
        }
}

puis

    public class ComentariosPerfil : BaseComentarios, IPerfil
    {
        public int IPerfil.IDFilial
        {
            get;
            set;
        }
[...]

Je reçois une erreur de compilation, disant que le modificateur "public" ne peut pas être appliqué à cet élément.

La question est la suivante :

Je veux que cette propriété soit publique. Je ne peux pas écrire de modificateurs dans l'interface comme :

   public int IDPerfil
        {
            get;
            set;
        }

Donc, comment puis-je implémenter explicitement un membre de l'interface, et rendre Il est public ?

6voto

Russell McClure Points 2704

Pour les interfaces implémentées explicitement, vous ne pouvez pas spécifier la visibilité. Elle est reprise de la visibilité dans la définition de l'interface.

Dans votre cas, utilisez donc ce qui suit. La fonction sera publique parce que c'est la façon dont l'API est utilisé. IPerfil est définie :

public class ComentariosPerfil : BaseComentarios, IPerfil 
{ 
    int IPerfil.IDFilial 
    { 
        get; 
        set; 
    }

0voto

Femaref Points 41959

Non, tu ne peux pas. L'implémentation explicite d'une interface signifie que vous devez d'abord la convertir en type d'interface pour utiliser le contrat défini. Tous les membres d'une interface sont publics par défaut, donc une interface explicite publique n'a pas de sens car vous ne pouvez pas y accéder depuis la classe d'implémentation en premier lieu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X