C # явно объявить интерфейс пользователя - PullRequest
3 голосов
/ 22 октября 2010

Как объявить явный член интерфейса? .I.e:

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

тогда

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

Я получаю ошибку компиляции, говорящую, что модификатор public не может быть применен к этому элементу.

Вопрос:

Я хочу, чтобы это свойство было общедоступным. Я не могу написать модификаторы в интерфейсе как:

   public int IDPerfil
        {
            get;
            set;
        }

Итак, как я могу явно реализовать элемент интерфейса и сделать общедоступным?

Ответы [ 2 ]

6 голосов
/ 22 октября 2010

Для явно реализованных интерфейсов вы не можете указать видимость.Он взят из видимости в определении интерфейса.

Так что в вашем случае используйте следующее.Функция будет общедоступной, потому что именно так определяется интерфейс IPerfil :

public class ComentariosPerfil : BaseComentarios, IPerfil 
{ 
    int IPerfil.IDFilial 
    { 
        get; 
        set; 
    }
0 голосов
/ 22 октября 2010

Нет, вы не можете. Явная реализация интерфейса означает, что вы должны сначала привести его к типу интерфейса, чтобы использовать определенный контракт. Все члены интерфейса являются общедоступными по умолчанию, поэтому открытый явный интерфейс не имеет никакого смысла, потому что вы не можете получить к нему доступ из класса реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...