У Интерфейсов Могут Быть Приватные Методы
Вот вам немного бесполезных знаний. Интерфейсы могут иметь приватные методы.
Это связано с функцией C#8: «реализация интерфейса по умолчанию». Она позволяет нам определить реализацию по умолчанию для метода в интерфейсе. Это полезно, когда мы хотим добавить новый метод к интерфейсу, но не хотим разрушать все классы, реализующие этот интерфейс. Что-то вроде этого:
public interface IMyInterface
{
public void MyMethod()
{
// Что-то делаем
}
}
public class MyClass : IMyInterface
{
// Не надо реализовывать MyMethod
}
Но при использовании мы не можем вызвать MyMethod из MyClass:
cs
var myClass = new MyClass();
myClass.MyMethod();
Код выше не скомпилируется. Метод надо вызвать вот так:
IMyInterface myInterface = myClass;
myInterface.MyMethod();
И чтобы ещё больше всё запутать, мы также можем провести рефакторинг приватных членов интерфейса:
public interface IMyInterface
{
public void MyMethod()
{
MyPrivateMethod();
}
private void MyPrivateMethod()
{
// что-то делаем
}
}
Не то, чтобы это было очень красиво или полезно, но так можно делать. Кстати, если кто придумает юзкейс для такого случая, пишите в комментариях.
Источник: https://steven-giesel.com/blogPost/03957748-73b3-40f9-a9f7-cc95501a3a8e