c# - generate - Nombre de la propiedad y necesita su valor
microsoft c# properties (5)
En tiempo de ejecución, puede usar el reflejo para obtener el valor de la propiedad.
Dos advertencias:
Ofuscación: un ofuscador puede cambiar el nombre de la propiedad, lo que romperá esta funcionalidad.
Refactorización: Usar la reflexión de esta manera hace que el código sea más difícil de refactorizar. Si cambia el nombre de la propiedad, es posible que deba buscar instancias en las que utilice el reflejo para obtener el valor de la propiedad en función del nombre.
Tengo un nombre de propiedad y necesito encontrar su valor dentro de una Clase, ¿cuál es la forma más rápida de obtener este valor?
Estoy asumiendo que tienes el nombre de la propiedad en tiempo de ejecución; no mientras codifica ...
Supongamos que su clase se llama TheClass y tiene una propiedad llamada TheProperty:
object GetThePropertyValue(object instance)
{
Type type = instance.GetType();
PropertyInfo propertyInfo = type.GetProperty("TheProperty");
return propertyInfo.GetValue(instance, null);
}
Si está interesado en la velocidad en el tiempo de ejecución en lugar de en el desarrollo, eche un vistazo a la reflexión de Hacer de Jon Skeet y explore la publicación de blog de los delegados .
Solo usa el nombre de la propiedad. Si se trata de una propiedad que admite valores NULL (por ejemplo, propiedad int), use property.Value.
Supongo que quiere decir que tiene el nombre de la propiedad como una cadena. En este caso, debe usar un poco de reflexión para recuperar el valor de la propiedad. En el siguiente ejemplo, el objeto que contiene la propiedad se llama obj
.
var prop = obj.GetType().GetProperty("PropertyName");
var propValue = prop.GetValue(obj, null);
Espero que ayude.