Здравствуйте, _NN_, Вы писали:
_NN>Основная проблема это наследование состояния, а его в интерфейсе нет. _NN>Не хотите реализацию по умолчанию, переопределяйте все методы по старинке. Никто не запрещает.
И зачем тогда методы с реализацией в интерфейсе? Замусоривание синтаксиса, ничего более. Если уж так нужно, можно сделать абстрактный класс. Но вообще не нужно. Интерфейс служит для объявления контракта — всё. Остальное излишне и может только добавить в код избыточную сложность.
_NN>Кстати, методы расширения тоже нарушают чистоту ? _NN>[c#] _NN>interface MyInterface { int G(); }
_NN>static class InterfaceExtensions _NN>{ _NN> public static int F(this MyInterface i) { return i.G() + 1; } _NN>}
А тут всё нормально: есть чистый интерфейс, есть код подстановки. В функцию F будут передаваться экземпляры конкретных классов, реализующих MyInterface.