Как отразить в WinRT свойства, реализующие интерфейс?

#c# #windows-runtime

#c# #windows-среда выполнения

Вопрос:

Иногда во время выполнения Windows требуется вернуть список свойств класса, которые реализуют определенный интерфейс. К сожалению, некоторые из .Вспомогательные методы Net, которые сделали это возможным, отсутствуют или перемещены. Как вы отражаете свойства, которые реализуют определенный интерфейс?

Ответ №1:

Вот так:

 using System.Reflection;

/// <summary>Finds properties that implement a type</summary>
/// <param name="parent">The parent type</param>
/// <param name="type">The filter type</param>
/// <returns>Enumerable of PropertyInfo</returns>
IEnumerable<PropertyInfo> Properties(Type parent, Type type)
{
    var typeinfo = type.GetTypeInfo();
    var properties = parent.GetRuntimeProperties();
    foreach (PropertyInfo property in properties)
    {
        var propertytypeinfo = property.PropertyType.GetTypeInfo();
        if (typeinfo.IsAssignableFrom(propertytypeinfo))
            yield return property;
    }
}
  

Удачи!