BindingFlags и наследование интерфейсов - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! В общем BindingFlags. Получаю список свойств:
Листинг программы
  1. PropertyInfo[] p = type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
И все бы хорошо, но он не хочет видеть наследуемые свойства, например есть два интерфейса:
Листинг программы
  1. public interface IRelized : IProductBaseble
  2. {
  3. /// <summary>
  4. /// Серийные номера проданных товаров (или их ид), тогда инт
  5. /// </summary>
  6. string SN { get; set; }
  7. /// <summary>
  8. /// Дата продажи
  9. /// </summary>
  10. DateTime theDate { get; set; }
  11. }
  12. public interface IProductBaseble
  13. {
  14. [ForReady.Libraries.DisplayedToNewForm("Артикул")] int Art { get; set; }
  15. [ForReady.Libraries.DisplayedToNewForm("Наименование")] string Name { get; set; }
  16. /// <summary>
  17. /// В списке товаров к продаже - количество товаров на складе изначально (не остаток)ъ
  18. /// В продажах - количество проданного товара в конкретной реализации
  19. /// </summary>
  20. [ForReady.Libraries.DisplayedToNewForm("Количество")] int theCount { get; set; }
  21. /// <summary>
  22. /// В списке товаров к продаже - стоимость товаров на складе изначально (не остаток)ъ
  23. /// В продажах - стоимость проданного товара в конкретной реализации
  24. /// </summary>
  25. [ForReady.Libraries.DisplayedToNewForm("Стоимость")]double Secondcost { get; set; }
  26. }
Получаю свойства:
Листинг программы
  1. PropertyInfo[] p = typeof(IRelized).GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
на выходе только SN и theDate. Пробовал убрать DeclaredOnly, тоже не помогает. Видит только их. NonPublic тоже не помог

Решение задачи: «BindingFlags и наследование интерфейсов»

textual
Листинг программы
  1. public static IEnumerable<PropertyInfo> GetPublicProperties(this Type type)
  2. {
  3.     if (!type.IsInterface)
  4.         return type.GetProperties();
  5.  
  6.     return (new Type[] { type })
  7.            .Concat(type.GetInterfaces())
  8.            .SelectMany(i => i.GetProperties());
  9. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы