Le interfacce fluenti sono facilmente supportate in C # utilizzando return
this
.
In Linq, i metodi di estensione sono usati per realizzare la stessa cosa. I metodi di estensione oltre IQueryable
o IEnumerable
sono facilmente concatenati.
Cascades, come descritto dalla pagina al link che hai fornito, sembra essere semplicemente un sottile perfezionamento di un'interfaccia Fluent ordinaria in cui return
this
non è richiesto per farlo funzionare, poiché tutte le chiamate di metodo iniziano con ..
si riferisce al primo risultato restituito:
query('#my-form').query('button')
..classes.add('toggle')
..text = 'Click Me!'
..labels.add(toggleLabel);
C # supporta questo? No, non esattamente. Ma puoi ancora scrivere il seguente codice equivalente:
var result = query('#my-form').query('button')
result.classes.add('toggle')
result.text = 'Click Me!'
result.labels.add(toggleLabel);
ed è solo leggermente più prolisso (e probabilmente più facile da leggere).
Per quanto riguarda la domanda, "Erano mai stati presi in considerazione per C #," dovresti chiedere a Anders Hejlsberg o Eric Lippert a riguardo. La mia ipotesi è che lo vedano come zucchero sintattico, che in effetti lo è.