Я хотел знать, как получить значение свойства в C#, но это свойство имеет другой тип.C# Отражение на вложенных свойствах класса
public class Customer
{
public string Name {get; set;}
public string Lastname {get; set;}
public CustomerAddress Address {get; set;}
}
Так что я могу получить значения свойств Name и LastName, но я совершенно не понимаю, как получить значение CustomerAddress.City.
Это то, что я имею до сих пор.
public object GetPropertyValue(object obj, string property)
{
if (string.IsNullOrEmpty(property))
return new object { };
PropertyInfo propertyInfo = obj.GetType().GetProperty(property);
return propertyInfo.GetValue(obj, null);
}
Тогда этот метод используется в операторе LINQ.
var cells = (from m in model
select new
{
i = GetPropertyValue(m, key),
cell = from c in columns
select reflection.GetPropertyValue(m, c)
}).ToArray();
Таким образом, я не получаю никакой ценности для CustomerAddress.
Любая помощь будет глубоко оценена.
**** **** UPDATE
Вот как мне удалось это сделать.
public object GetNestedPropertyValue(object obj, string property)
{
if (string.IsNullOrEmpty(property))
return string.Empty;
var propertyNames = property.Split('.');
foreach (var p in propertyNames)
{
if (obj == null)
return string.Empty;
Type type = obj.GetType();
PropertyInfo info = type.GetProperty(p);
if (info == null)
return string.Empty;
obj = info.GetValue(obj, null);
}
return obj;
}
Как насчет установки значения вложенного свойства? (То же, что и этот, но для info.SetValue ...)? – Denis