Questa è una domanda teorica, ho già trovato una soluzione al mio problema che mi ha portato su un percorso diverso, ma penso che la domanda sia ancora potenzialmente interessante.Come posso passare una proprietà come delegato?
Posso passare le proprietà dell'oggetto come delegati nello stesso modo in cui posso con i metodi? Ad esempio:
Diciamo che ho caricato un lettore di dati con i dati e che il valore di ogni campo deve essere passato in proprietà di tipi diversi che sono stati controllati per DBNull. Se il tentativo di ottenere un singolo campo, potrei scrivere qualcosa di simile:
if(!rdr["field1"].Equals(DBNull.Value)) myClass.Property1 = rdr["field1"];
Ma se devo dire 100 campi, che diventa ingombrante molto rapidamente. Ci sono un paio di modi in cui una chiamata a fare questo potrebbe essere bello:
myClass.Property = GetDefaultOrValue<string>(rdr["field1"]); //Which incidentally is the route I took
Il che potrebbe anche guardare bello come un metodo di estensione:
myClass.Property = rdr["field1"].GetDefaultOrValue<string>();
Oppure:
SetPropertyFromDbValue<string>(myClass.Property1, rdr["field1"]); //Which is the one that I'm interested in on this theoretical level
Nel in secondo luogo, la proprietà dovrebbe essere passata come delegato per impostarla.
Quindi la domanda è in due parti:
- è possibile?
- Che aspetto avrebbe?
[Dato che questo è solo teorica, risposte in VB o C# sono ugualmente accettabile per me]
Edit: Ci sono alcune risposte chiazza di petrolio qui. Ringrazia tutti.
Anch'io amo le implicazioni di questo. Bella risposta. – BenAlabaster