2011-02-19 26 views
7

¿Hay una manera de obtener el valor de una variable con sólo saber el nombre de la misma, así:Conseguir la variable por su nombre en C#

double temp = (double)MyClass.GetValue("VariableName"); 

Cuando normalmente se accede a la variable como esto

double temp = MyClass.VariableName; 
+1

Tengo curiosidad sobre el contexto que necesitaría para hacer esto, donde acceder a un valor como una propiedad normalmente no sería suficiente. –

Respuesta

19

Puede usar reflection. Por ejemplo, si PropertyName es un público property en MyClass y tiene una instancia de esta clase que usted podría:

MyClass myClassInstance = ... 
double temp = (double)typeof(MyClass).GetProperty("PropertyName").GetValue(myClassInstance, null); 

Si se trata de un público field:

MyClass myClassInstance = ... 
double temp = (double)typeof(MyClass).GetField("FieldName").GetValue(myClassInstance); 

supuesto, usted debe ser consciente de que doesn reflexión sin costo Podría haber una penalización de rendimiento en comparación con el acceso directo a propiedad/campo.

+2

Ten cuidado; podría ser muy lento al usar esto con frecuencia. –

+0

@Erno, sí, absolutamente. –

+0

¿El reflejo sería más lento que un filtro de cambio de 10 cajas? – Andreas

Cuestiones relacionadas