mercredi 9 janvier 2019

Reflection Dinamyc

I want to create a method to use in many situations to work dynamic, in special, when I have a class with properties can be are other classes. In the example below the Person has phones and ocupations both are other classes. When de data are displayed in this properties the value on the screen are:

TestReflection.Person
Name: Mary
Phones: TestReflection.Phones
Occupations: TestReflection.Occupations

How can I change this code to show information like:

TestReflection.Person
Name: Mary
Phones:
TestReflection.Phones
Type: 1
Number: 555XYZ
Occupation:
TestReflection.Occupations
Type: 5
Description: Secretary

class Program
{
    static void Main(string[] args)
    {
        List<Person> listPeson = new List<Person>();
        var person1 = new Person();
        person1.Name = "Mary";
        person1.Phones = new  Phones { new Phone { Type = 1, Number = "555XYZ" } };
        person1.Occupations = new Occupations {new Occupation { Type = 5, Description = "Secretary" }};
        listPeson.Add(person1);
        DynamicExport(listPeson);
        Console.ReadLine();
    }

    public static void DynamicExport<T>(List<T> listReg)
    {

        for (int i = 0; i < listReg.Count; i++)
        {
            Console.WriteLine(listReg[i].GetType());
            foreach (var item in listReg[i].GetType().GetProperties())
            {
                Console.WriteLine($"{item.Name}: {item.GetValue(listReg[i], null)}");
            }
        }
    }
}


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

class Phones : List<Phone> { }
class Phone
{
    public int Type { get; set; }
    public string Number { get; set; }
}

class Occupations : List<Occupation> { }
class Occupation

{
    public int Type { get; set; }
    public string Description { get; set; }
}





Aucun commentaire:

Enregistrer un commentaire