Почему я не могу вызвать защищенный метод интерфейса по умолчанию из класса реализации в C#?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему я не могу вызвать защищенный метод интерфейса по умолчанию из класса реализации в C#?

Сообщение Anonymous »

Я пытаюсь использовать защищенный метод по умолчанию в интерфейсе C#, но я не могу назвать его из моего класса реализации. Например: < /p>
interface IInterface
{
protected void Protected() { }
}

class Class : IInterface
{
public Class()
{
this.Protected(); // Fails with: 'Class' does not contain a definition for 'Protected' and no accessible extension method 'Protected' accepting a first argument of type 'Class' could be found (are you missing a using directive or an assembly reference?)
((IInterface)this).Protected(); // Fails with: Cannot access protected member 'IInterface.Protected()' via a qualifier of type 'IInterface'; the qualifier must be of type 'Class' (or derived from it)
}
}
< /code>
Прямые и явные вызовы не могут компилироваться. Почему это и как я могу вызвать защищенную реализацию по умолчанию из моего класса? Есть ли обходной путь или рекомендуемый шаблон для этого сценария? У меня есть ситуация, когда я не могу сделать это как абстрактный базовый класс, и мне нужно было работать для тех случаев, когда метод не реализован.


Подробнее здесь: https://stackoverflow.com/questions/796 ... ting-class
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»