Как вы считаете, является ли чем-то полезным наследование интерфейсов типа такого?
interface IService1
{
void Foo();
}
interface IService2: IService1
{
void Bar();
}
Я считаю, что это только запутывает код.
Вспомним букву I в SOLID: интерфейс — это аспект поведения. У компонента может быть много аспектов, но они должны быть разделены.
Кроме очевидных исключений типа
IEnumerable<T>: IEnumerable