BindingFlags и наследование интерфейсов - C#
Формулировка задачи:
Добрый день!
В общем BindingFlags. Получаю список свойств:
И все бы хорошо, но он не хочет видеть наследуемые свойства, например есть два интерфейса:
Получаю свойства:
на выходе только SN и theDate. Пробовал убрать DeclaredOnly, тоже не помогает. Видит только их. NonPublic тоже не помог
PropertyInfo[] p = type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
public interface IRelized : IProductBaseble
{
/// <summary>
/// Серийные номера проданных товаров (или их ид), тогда инт
/// </summary>
string SN { get; set; }
/// <summary>
/// Дата продажи
/// </summary>
DateTime theDate { get; set; }
}
public interface IProductBaseble
{
[ForReady.Libraries.DisplayedToNewForm("Артикул")] int Art { get; set; }
[ForReady.Libraries.DisplayedToNewForm("Наименование")] string Name { get; set; }
/// <summary>
/// В списке товаров к продаже - количество товаров на складе изначально (не остаток)ъ
/// В продажах - количество проданного товара в конкретной реализации
/// </summary>
[ForReady.Libraries.DisplayedToNewForm("Количество")] int theCount { get; set; }
/// <summary>
/// В списке товаров к продаже - стоимость товаров на складе изначально (не остаток)ъ
/// В продажах - стоимость проданного товара в конкретной реализации
/// </summary>
[ForReady.Libraries.DisplayedToNewForm("Стоимость")]double Secondcost { get; set; }
}PropertyInfo[] p = typeof(IRelized).GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
Решение задачи: «BindingFlags и наследование интерфейсов»
textual
Листинг программы
public static IEnumerable<PropertyInfo> GetPublicProperties(this Type type)
{
if (!type.IsInterface)
return type.GetProperties();
return (new Type[] { type })
.Concat(type.GetInterfaces())
.SelectMany(i => i.GetProperties());
}