Nelle mie prove di sviluppo di applicazioni LightSwitch mi sono imbattuto in una caratteristica che, di primo acchito, mi ha dato fastidio: i metodi di evento con parametri di ritorno.
A esempio, nel codice di valorizzazione di un campo calcolato (cioè della Computed Property di una Entity), ci viene proposto un metodo con un parametro 'di ritorno':
Private Sub Quantity_Validate(ByVal results As EntityValidationResultsBuilder)
If Quantity < 1 Then _
results.AddPropertyError("Quantity must be greater then zero")
End Sub
Il fastidio era dovuto all'idea che un valore di ritorno dovesse essere restituito da una Function. Cioè il codice chiamante sarebbe dovuto essere di assegnazione. Qualcosa come:
Dim result As EntityValidationResult = Quantity_Validate()
Intendiamoci: non è che sia un 'errore' o un bug. Basta ragionarci un pochino su per scoprire che è molto meglio così.
Semplicemente, nell'oggetto che chiama questo metodo esiste un oggetto EntityValidationResultsBuilder che gestisce un insieme di tipo EntityValidationResults (presumibilmente, non lo so ancora con sicurezza, ma ai fini del mio discorso non è importante). Quindi a questo metodo viene passato il riferimento a quell'insieme.
Infatti, bisogna tener conto del fatto che viene convalidata l'entità, non la sua singola proprietà. Quindi ci possono essere più di una causa di mancata convalida. Ecco perché ci si trova di fornte 'un insieme' di risultati.
Con questo breve ragionamento, spero di 'levare il fastidio' a coloro che, eventualmente, lo stessero provando come l'ho provato io.