O C # tem um equivalente à tipagem estrutural do Scala?

Em Scala, eu posso definirtipos estruturais do seguinte modo:

type Pressable = { def press(): Unit }

Isso significa que eu posso definir uma função ou método que usa como argumento algo que é Pressable, assim:

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

O objeto que passo para esta função deve ter definido para ela um método chamado press () que corresponde à assinatura de tipo definida no tipo - não aceita argumentos, retorna Unit (versão do void de Scala).

Eu posso até usar o tipo estrutural inline:

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

Basicamente, permite que o programador tenha todos os benefícios da digitação de pato, enquanto ainda tem o benefício da verificação de tipo em tempo de compilação.

C # tem algo parecido? Eu pesquisei no Google, mas não consigo encontrar nada, mas não estou familiarizado com o C # em profundidade. Se não houver, existem planos para adicionar isso?

questionAnswers(4)

yourAnswerToTheQuestion