Tengo el siguiente dos clases:Conseguir anidada Objeto Propiedad Valor utilizando la reflexión
public class Address
{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
}
public class Employee
{
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public Address EmployeeAddress { get; set; }
}
Tengo una instancia de la clase de los empleados de la siguiente manera:
var emp1Address = new Address();
emp1Address.AddressLine1 = "Microsoft Corporation";
emp1Address.AddressLine2 = "One Microsoft Way";
emp1Address.City = "Redmond";
emp1Address.State = "WA";
emp1Address.Zip = "98052-6399";
var emp1 = new Employee();
emp1.FirstName = "Bill";
emp1.LastName = "Gates";
emp1.EmployeeAddress = emp1Address;
tengo un método que consigue la propiedad valor basado en el nombre de la propiedad de la siguiente manera:
public object GetPropertyValue(object obj ,string propertyName)
{
var objType = obj.GetType();
var prop = objType.GetProperty(propertyName);
return prop.GetValue(obj, null);
}
El método anterior funciona bien para las llamadas como GetPropertyValue(emp1, "FirstName")
pero si intento GetPropertyValue(emp1, "Address.AddressLine1")
arroja una excepción porque objType.GetProperty(propertyName);
no puede ubicar el valor de la propiedad del objeto anidado. ¿Hay alguna manera de arreglar esto?
¿Es esta una respuesta a la otra respuesta? –
esto no funciona para las propiedades de nivel 2 – SyntaxGoonoo
funcionó como un encanto! –