Получение свойств со значениями из объекта с навигацией

#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.