При использовании отражения для получения свойств, как я могу ограничить свой поиск только подклассом, который меня интересует?

После успешного получения списка определенных типов из сборки, используя отражение, я теперь хочу получить открытые свойства каждого из них.

Каждый из этих типов происходит по крайней мере от одного базового класса.

Я замечаю, что когда я получаю свойства для типа, я получаю свойства и от базовых классов.

Мне нужен способ отфильтровать свойства базового класса и получить обратно свойства только для того типа, для которого я вызываю, получить свойства get.

Я считаю, что это будет похоже на то, как я получаю только подклассы базового типа, исключая базовый тип, из данного базового типа.

Assembly.GetAssembly(baseType).GetTypes().Where(type => type.IsSubclassOf(baseType)).ToList()

2 ответа

Решение

Использование BindingFlags.DeclaredOnly в вашем звонке Type.GetProperties:

var properties = Type.GetProperties(BindingFlags.DeclaredOnly | 
                                    BindingFlags.Public |
                                    BindingFlags.Instance);

Используйте флаг привязки BindingFlags.DeclaredOnly в методе GetProperties

Другие вопросы по тегам