Esiste un modo per accedere al campo di supporto di una proprietà per eseguire la convalida, il rilevamento delle modifiche, ecc.?Accertamento del campo di supporto in una proprietà auto
È simile al seguente possibile? Se no, c'è qualche intenzione di averlo in .NET 4/C# 4?
public string Name
{
get;
set
{
if (value != <Keyword>)
{
RaiseEvent();
}
<Keyword> = value;
}
}
Il problema principale che ho è che utilizzando le proprietà auto non consente la stessa flessibilità di convalida, ecc che una proprietà con un campo di supporto esplicito fa. Tuttavia un campo di backing esplicito ha lo svantaggio in alcune situazioni di permettere alla classe in cui è contenuto di accedere al backing field quando dovrebbe accedere e riutilizzare la validazione, il change tracking, ecc. Della proprietà come qualsiasi altra classe che potrebbe accedere la proprietà esternamente.
Nell'esempio precedente accesso al campo supporto sarebbe limitato l'ambito della proprietà impedendo così l'elusione della convalida di proprietà, il rilevamento delle modifiche ecc
Edit: ho cambiato < Backup Field> di < Chiave >. Proporrei una nuova parola chiave simile al valore. il campo farebbe bene anche se sono sicuro che viene utilizzato in un sacco di codice esistente.
È una buona soluzione ma un sacco di codice per accedere al campo nello stesso modo in cui accediamo al nuovo valore in un setter con la parola chiave value essere molto più succinti ed eleganti. –
Probabilmente è possibile migliorare la sintassi aggiungendo operator = e coherion a T nella classe ValidatedValue. Fondamentalmente vuoi che si comporti come ValidatedValue è un T. –