При использовании отражения для получения свойств, как я могу ограничить свой поиск только подклассом, который меня интересует?
После успешного получения списка определенных типов из сборки, используя отражение, я теперь хочу получить открытые свойства каждого из них.
Каждый из этих типов происходит по крайней мере от одного базового класса.
Я замечаю, что когда я получаю свойства для типа, я получаю свойства и от базовых классов.
Мне нужен способ отфильтровать свойства базового класса и получить обратно свойства только для того типа, для которого я вызываю, получить свойства 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