es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hace Reflection para recuperar datos asignados a variables?

Mi comprensión hasta ahora es que Reflection se utiliza para recuperar los nombres de los Tipos y sus miembros de un ensamblado a través de sus metadatos. Me he encontrado con algunos ejemplos de Reflection en acción idénticos al siguiente ejemplo.

class Person
{
    public string Name {get;set;}
}

static void Main(string[] args)
{
    Person person = new Person();
    person.Name = "John";
    Console.WriteLine(person.GetType().GetProperty("Name").GetValue(person)); //John
    person.Name = "Mary";
    Console.WriteLine(person.GetType().GetProperty("Name").GetValue(person)); //Mary
}

Entiendo cómo Reflection puede obtener los nombres de los Tipos, los miembros, etc., ya que esto es lo que se almacena en los metadatos de un ensamblado, pero ¿cómo obtiene Reflection el valor asociado a ello? Estos son datos dinámicos que cambian durante la ejecución de un programa (como se muestra en el ejemplo), los cuales los metadatos de un ensamblado no contienen (¿verdad?).

Agradecería aclaración sobre cómo Reflection obtiene los valores reales y si esto es realmente así. ¡Por favor, corrige cualquier cosa que haya dicho que no sea correcta!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Es correcto tu entendimiento de que Reflection se utiliza para obtener los nombres de los tipos y sus miembros de un ensamblado a través de su metadatos. Sin embargo, Reflection también se puede utilizar para obtener el valor asociado con un miembro.

    En tu ejemplo, la línea de código person.GetType().GetProperty("Name").GetValue(person) está llamando al método GetValue en el objeto PropertyInfo que fue devuelto al llamar GetProperty("Name"). Este método recupera el valor actual de la propiedad en el objeto Person que se pasó como parámetro.

    Es correcto que estos sean datos dinámicos que cambian durante la ejecución de un programa. Estos datos no se almacenan en los metadatos del ensamblado, sino en la memoria mientras el programa se está ejecutando. Reflection te permite acceder a estos datos dinámicos en tiempo de ejecución.

    Espero que esto aclare cómo Reflection recupera los valores reales. ¡Avísame si tienes alguna pregunta adicional!

Comments are closed.