Есть ли в C # эквивалент структурной типизации Scala?

В Scala я могу определитьструктурные типы следующее:

type Pressable = { def press(): Unit }

Это означает, что я могу определить функцию или метод, который принимает в качестве аргумента что-то, что является Pressable, например так:

def foo(i: Pressable) { // etc.

Объект, который я передаю этой функции, должен определить для нее метод с именем press (), который соответствует сигнатуре типа, определенной в типе - не принимает аргументов, возвращает Unit (версия void для Scala).

Я даже могу использовать структурный тип inline:

def foo(i: { def press(): Unit }) { // etc.

По сути, это позволяет программисту использовать все преимущества типизации утилит, в то же время имея возможность проверки типов во время компиляции.

Есть ли в C # нечто подобное? Я гуглил, но ничего не могу найти, но я не знаком с C # в любой глубине. Если нет, есть ли планы добавить это?

Ответы на вопрос(0)

Ваш ответ на вопрос