Ковариация и контравариантность - еще один пример. Я думаю. Я могу ошибаться.
Барт Де Смет говорит : «В различных дисциплинах существует множество двойственностей, обеспечивающих большой обмен знаниями между различными областями. Например, в формальной логике закон Де Моргана позволяет преобразовывать выражения, построенные из союзов, в выражения. построенный из дизъюнкций и наоборот. В электронике существует сходство между поведением конденсаторов и индуктивностей: знаете одно и как переходить назад и вперед между доменами, а вы знаете другое. Исчисление Фурье обеспечивает двойственные значения между временными и частотными областями ». Интересно.
Они также называют System.Reactive двойным System.Interactive. Так что большинство функций в одной из сборок имеет двойственную функцию в другой. Чтобы уточнить, дело не только в том, что IO - это двойник IE, но и функции, которые на них работают, также дуализированы.
Таким образом, чтобы ответить на ваш вопрос, существует много дуализированных интерфейсов. Вы можете использовать любой интерфейс. Вы просто меняете входы и выходы и направление функции. Некоторые из них не будут полезны или будут двойственными. Тем не менее, иногда есть действительно могущественные, скрывающиеся в ожидании раскрытия.