2011-06-15 21 views
5

tengo una propiedad almacenado en una cadena ... digamos objeto Foo tiene una propiedad Bar, así que para obtener el valor de la propiedad Bar yo llamaría ..Evaluar una cadena como una propiedad en C#

Console.Write(foo.Bar); 
Ahora

decir que tengo "Bar" almacenada en una variable de cadena ...

string property = "Bar" 

Foo foo = new Foo(); 

cómo iba a obtener el valor de foo.Bar usando property?

Cómo estoy acostumbrado a hacerlo en PHP

$property = "Bar"; 

$foo = new Foo(); 

echo $foo->{$property}; 

Respuesta

6
Foo foo = new Foo(); 
var barValue = foo.GetType().GetProperty("Bar").GetValue(foo, null) 
1

Se podría utilizar la reflexión:

PropertyInfo propertyInfo = foo.GetType().GetProperty(property); 
object value = propertyInfo.GetValue(foo, null); 

El null en la llamada no es para propiedades indizadas , que no es lo que tienes

1

Necesita usar el reflejo para hacer esto.

Algo como esto debe tener cuidado de que

foo.GetType().GetProperty(property).GetValue(foo, null); 
Cuestiones relacionadas