Получить член класса из списка классов с помощью отражения - PullRequest
0 голосов
/ 24 марта 2020

У меня есть класс, набранный так:

public class MyClass{
    public List<Myclass1> mc {get;set;}
    public List<Myclass2> mc2 {get;set;}
}

public class Myclass1{
    public string MyString{get;set}
    public string Mystring2 {get;set}
}

Как я могу получить список свойств Myclasse1, когда я получаю доступ к членам MyClass с помощью такого отражения:

foreach (var p in MyClass.GetType().GetProperties()){
 //Getting Members of MyClass
 //Here i need to loop through the members name of Myclass1, MyClass2,etc...
}

1 Ответ

1 голос
/ 24 марта 2020

Вам нужно что-то вроде этого:

foreach (var p in typeof(MyClass).GetProperties())
{
    if (p.PropertyType.IsGenericType && p.PropertyType.GetGenericTypeDefinition() == typeof(List<>))
    {
        Type listOf = p.PropertyType.GetGenericArguments().First();
    }
}

Я позволил себе сменить MyClass.GetType(). на typeof(MyClass), так как я думаю, что это то, что вы имели в виду.

В основном мы проверьте, что тип свойства (например, typeof(List<Myclass1>)) создан из открытого List<>, а затем получите первый аргумент generi c (Myclass1).

Попробуйте в Интернете .

...