2010-10-22 3 views
3

Как объявить явный член интерфейса .ie:C# явного члена объявить

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 int IDPerfil 
     { 
      get; 
      set; 
     } 

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

ответ

6

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

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

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

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

+0

@Femaref: Может быть, вы смущены моим использованием слова «in». Я говорю о начале определения интерфейсов, вы можете указать видимость. Кроме того, вы, похоже, подразумеваете, что у вас могут быть только общедоступные интерфейсы, что не соответствует действительности. Вы можете легко создать внутренний интерфейс, а затем выполнить его. –

+0

Да, это похоже на случай. – Femaref

0

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

Смежные вопросы