Io non sono un C# ragazzo io sono più un ragazzo Objective-C, ma ultimamente ho visto un sacco di implementazioni di:Azione <T> vs ritorno standard
public void Method(Action<ReturnType> callback, params...)
Invece di:
public ReturnType Method(params...)
Uno degli esempi di questo è MVVM Light Framework, in cui lo sviluppatore implementa il contratto di servizio dati (e implementazione) utilizzando il primo approccio, quindi la mia domanda è: perché questo? È solo questione di like o è il primo approccio asincrono per default (dato il puntatore della funzione). Se è vero, è la morte di ritorno standard? Chiedo perché personalmente mi piace che il secondo approccio mi sia più chiaro quando vedo un'API.
Nel caso in cui non lo si sia già incontrato, con la Libreria parallela attività, le librerie che offrono metodi asincroni * tipicamente * offrono Task Method (params ...) invece di richiamare, ma che potrebbe non essere un opzione per le librerie che hanno bisogno di lavorare con framework che non hanno il supporto Task (ad esempio, Silverlight ha ottenuto l'attività aggiunta nella versione 5, quindi qualsiasi cosa Silverlight 4 o prima avrebbe bisogno di attaccare con callback o qualche altro pattern) –
@JamesManning Ho visto implementazioni del TPL che sembra abbastanza chiaro. Sono - dietro le coperte - lo stesso? –
Penso che dipenderebbe da qualunque sia la libreria di implementazione. Concettualmente, il TPL è un po '"migliore" (IMHO) perché gestisce cose come cancellazioni ed eccezioni.Con le nuove funzionalità del linguaggio, puoi anche scrivere ciò che "sente" come il codice sincrono usando la parola chiave await, che ti evita di dover scrivere metodi di callback, lasciando che il compilatore riscriva il metodo per farlo. –