Net framework 5, а также среды Visual Studio 2012 и C#



Download 6,27 Mb.
Pdf ko'rish
bet478/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   474   475   476   477   478   479   480   481   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

ПриМеЧание
Microsoft.использует.нотацию.Бэкуса–Наура.для.записи.имен.типов.и.имен.с.указа-
нием.сборки,.которые.используются.для.написания.строк,.передаваемых.в.методы.
отражения .Знание.нотации.оказывается.очень.кстати.при.использовании.отражения.
и.особенно.при.работе.с.вложенными.типами,.обобщенными.типами.и.методами,.
ссылочными.параметрами.или.массивами .За.полным.описанием.нотации.обращай-
тесь.к.документации.FCL.или.выполните.поиск.в.Интернете.по.строке.«Backus-Naur.
Form.Grammar.for.Type.Names» .Вы.также.можете.посмотреть.методы.MakeArrayType,.
MakeByRefType,.MakeGenericType.и.MakePointerType.классов.Type.и.TypeInfo 
Во многих языках программирования есть оператор, позволяющий получить 
объект 
Type
по имени типа. Для получения ссылки на 
Type
лучше использовать 
именно такой оператор, а не перечисленные методы, так как при компиляции 
оператора получается более быстрый код. В C# это оператор 
typeof
, хотя обычно 
его не применяют для сравнения информации о типах, загруженных посредством 
позднего и раннего связывания, как в следующем примере:


646
Глава.23 .Загрузка.сборок.и.отражение
private static void SomeMethod(Object o) {
// GetType возвращает тип объекта во время выполнения
// (позднее связывание)
// typeof возвращает тип указанного класса
// (раннее связывание)
if (o.GetType() == typeof(FileInfo)) { ... }
if (o.GetType() == typeof(DirectoryInfo)) { ... }
}
ПриМеЧание
Первая.инструкция.if.проверяет,.ссылается.ли.переменная.o.на.объект.типа.FileInfo,.
но.не.на.тип,.производный.от.FileInfo .Иначе.говоря,.этот.код.проверяет.на.точное,.
а.не.на.совместимое.соответствие .Совместимое.соответствие.обычно.достигается.
путем.приведения.типов.либо.использования.оператора.is.или.as.языка.C# 
Как упоминалось ранее, объект 
Type
представляет ссылку на тип, то есть со-
держит минимум информации. Для получения более полной информации о типе 
следует получить объект 
TypeInfo
, представляющий определение типа. Объект 
Type
можно преобразовать в 
TypeInfo
вызовом метода расширения 
GetTypeInfo
класса 
System.Reflection.IntrospectionExtensions
:
Type typeReference = ...; // Например: o.GetType() или typeof(Object) 
TypeInfo typeDefinition = typeReference.GetTypeInfo();
И хотя эта возможность менее полезна, объект 
TypeInfo
можно преобразовать 
в объект 
Type
вызовом метода 
AsType
класса 
TypeInfo
.
TypeInfo typeDefinition = ...; 
Type typeReference = typeDefinition.AsType();
При получении объекта 
TypeInfo
CLR приходится убеждаться в том, что сбор-
ка, определяющая тип, загружена. Это затратная операция, без которой можно 
обойтись, если вам достаточно ссылок на типы (объекты 
Type
). Однако после полу-
чения объекта 
TypeInfo
можно запрашивать многие свойства типа и узнать о них 
много полезного. Большинство свойств, таких как 
IsPublic

IsSealed

IsAbstract

IsClass

IsValueType
и т. д., описывают флаги, связанные с типом. Другие свой-
ства (к ним относятся 
Assembly

AssemblyQualifiedName

FullName

Module
и пр.) 
возвращают имя сборки, в которой определен тип или модуль, и полное имя типа. 
При помощи свойства 
BaseType
можно узнать базовый тип. Все методы и свойства, 
предоставляемые типом 
TypeInfo
, описаны в документации FCL.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   474   475   476   477   478   479   480   481   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish