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?