Я пытаюсь использовать защищенный метод по умолчанию в интерфейсе 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