Domanda

Quello che dovrebbe essere più adeguato o che cosa si consiglia di utilizzare in VB.NET da entrambi riflessione vs. tardiva:

'Type can be various objects that have a common property for sure.'
Dim type = sender.GetType()
Dim prop = type.GetProperty("Text", 20)
Dim value = property.GetValue(sender, Nothing)

vs

Dim value = sender.Text
È stato utile?

Soluzione

Sotto le coperte sono entrambi facendo la stessa cosa (relativamente parlando). caratteristica late-binding di VB.NET è fatto tramite query di metadati di montaggio in fase di esecuzione, che è esattamente ciò che la riflessione è tutto.

Uno dei benefici per il tuo primo approccio è che si ha l'opportunità di gestire gli errori in modo più finemente a grana.

Altri suggerimenti

Non è sender.Text sempre una stringa però? Così il tipo di valore si può dedurre in fase di compilazione, rendendo quest'ultimo un esempio di associazione anticipata?

Se non utilizza l'associazione tardiva, si può mettere il metodo che estrae le proprietà in una classe parziale con Option Explicit = Off. In questo modo, si ha ancora il controllo del tipo nel resto del codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top