Главная страница   /   11.3. Изменения с рефлексией (Метапрограммирование в .NET

Метапрограммирование в .NET

Метапрограммирование в .NET

Кевин Хазард

11.3. Изменения с рефлексией

Есть несколько изменений, которые существуют в Windows 8 и .NET 4.5 по отношению к Reflection API. Первое из них заключается в том, как класс Type проецируется в Windows 8. Есть новый класс, называемый TypeInfo, и вы будете использовать его часто в Windows 8, если вы будете работать с рефлексией, потому что это единственный способ получить доступ и вызвать элементы во время выполнения. Вы не видите методов, как IsAssignableFrom, для объекта Type:

typeof(object).IsAssignableFrom(typeof(Math))

Вам нужно делать это таким образом:

typeof(object).GetTypeInfo().IsAssignableFrom(typeof(Math).GetTypeInfo())

GetTypeInfo() уводит вас от Type к TypeInfo, и метод расширения AsType() возвращает вас от TypeInfo к Type.

Как вы уже, наверное, уже догадались, касаемо приложений Windows 8 и ее модели безопасности, вы можете получить доступ только к открытым членам – вы не можете получить доступ к закрытым членам. Опять же, эти изменения предназначены строго для приложений Windows 8. Если вы ориентируетесь на .NET 4.5 за пределами Windows 8, вы все еще можете использовать полный класс Type.