#reflection #navigation #properties #entity
#отражение #навигация #свойства #объект
Вопрос:
У меня есть класс объектов данных, скажем, Customers, который также содержит некоторые другие свойства навигации, скажем, Orders, который содержит OrdersDetails и так далее, их может быть много в каждой системе.
Я знаю, что могу получить список всех свойств клиентов, используя отражение, и я также могу использовать их, если захочу, также путем отражения, как в примере кода ниже.
MyData ctx = new MyData();
Dictionary<string, string> listap = new Dictionary<string, string>();
// first part – getting properties
var type = typeof(Customers);
var members = from c in type.GetProperties() select c;
foreach (var item in members)
{
listap.Add(item.Name.ToString(), item.PropertyType.Name.ToString());
}
// second part – getting properties values
var item2 = (from c in ctx.Customers select c);
foreach (var item3 in item2)
{
foreach (var item in listap)
{
Console.WriteLine(item.Key " " item.Value " "
(typeof(Customers).GetProperty(item.Key).GetValue(item3, null)).ToString());
}
}
Что я хочу сделать, так это:
- Сначала вы сможете получить свойства всех других классов объектов, связанных с клиентами, через навигацию, даже если они находятся на расстоянии нескольких уровней — в данном случае Orders и OrderDetails, и сможете добавлять их в словарь listap.
- Получить значения свойств, даже если они находятся на расстоянии нескольких уровней от клиентов, используя список свойств из первой точки.
Я могу получить свойства, касающиеся заказов, из первой части, но я не знаю, как использовать их во второй части и как получить еще один уровень глубже для OrdersDetails.