Отсутствует метод Type.GetProperty () в Windows 8 Developer Preview. - PullRequest
23 голосов
/ 22 октября 2011

Я пытаюсь перенести простое приложение на Windows 8 Metro (WinRT). Кажется, что некоторые очень простые методы отсутствуют. Один базовый пример: Type.GetProperty(). Он доступен для клиентских профилей Windows Phone 7, Silverlight и .NET. Нужно ли что-то устанавливать (например, специальную библиотеку) или этот метод просто недоступен в профиле .NET metro?

UPDATE

ОК, спасибо. Теперь я использую this.GetType().GetTypeInfo().DeclaredProperties.

using System.Reflection; необходим для использования этого метода расширения GetTypeInfo().

Ответы [ 2 ]

24 голосов
/ 22 октября 2011

Отражение немного изменилось в Metro: см. MSDN («Изменения отражения» - внизу).

По сути, теперь вам нужно: type.GetTypeInfo().

12 голосов
/ 03 июля 2013

В дополнение к ответу Николаса Батлера, я в конечном итоге использовал этот вид расширений для поддержки кода, пригодного для повторного использования на всех платформах.

#if NETFX_CORE // Workaround for .Net for Windows Store not having Type.GetProperty method
    public static class GetPropertyHelper
    {
        public static PropertyInfo GetProperty(this Type type, string propertyName)
        {
            return type.GetTypeInfo().GetDeclaredProperty(propertyName);
        }
    }
#endif

Таким образом, Type.GetProperty() реализован для всех платформ.

...