Поделиться через


Type.GetNestedType Метод

Определение

Возвращает определенный тип, вложенный в текущий объект Type.

Перегрузки

GetNestedType(String)

Выполняет поиск открытого вложенного типа с заданным именем.

GetNestedType(String, BindingFlags)

При переопределении в производном классе ищет указанный вложенный тип, используя заданные ограничения привязки.

GetNestedType(String)

Исходный код:
Type.cs
Исходный код:
Type.cs
Исходный код:
Type.cs

Выполняет поиск открытого вложенного типа с заданным именем.

public:
 Type ^ GetNestedType(System::String ^ name);
public:
 virtual Type ^ GetNestedType(System::String ^ name);
public Type? GetNestedType (string name);
public Type GetNestedType (string name);
member this.GetNestedType : string -> Type
abstract member GetNestedType : string -> Type
override this.GetNestedType : string -> Type
Public Function GetNestedType (name As String) As Type

Параметры

name
String

Строка, содержащая имя искомого вложенного типа.

Возвращаемое значение

Объект, представляющий открытый вложенный тип с указанным именем, если тип есть, и null, если такого типа нет.

Реализации

Исключения

name имеет значение null.

Комментарии

В поиске name учитывается регистр.

Используйте простое имя вложенного класса для name. Не квалифицируйте его с именем внешнего класса. Для универсального вложенного класса используйте искаженное имя, то есть добавить серьезный акцент и количество универсальных аргументов. Например, используйте строку Inner'1, чтобы получить универсальный вложенный класс Inner<T> (Inner(Of T) в Visual Basic). Не включайте синтаксис конкретного языка для параметров типа.

В следующей таблице показано, какие элементы базового класса возвращаются методами Get при отражении типа.

Тип члена Статические Нестатическое
Конструктор Нет Нет
Поле Нет Да. Поле всегда является скрытием по имени и сигнатуре.
Событие Неприменимо Общее правило системы типов заключается в том, что наследование совпадает с наследованием методов, реализующих свойство . Отражение обрабатывает свойства как скрытие по имени и сигнатуре. См. примечание 2 ниже.
Метод Нет Да. Метод (как виртуальный, так и не виртуальный) может быть скрытием по имени или скрытием по имени и подписи.
Вложенный тип Нет Нет
Свойство. Неприменимо Общее правило системы типов заключается в том, что наследование совпадает с наследованием методов, реализующих свойство . Отражение обрабатывает свойства как скрытие по имени и сигнатуре. См. примечание 2 ниже.
  1. Функция скрытия по имени и подписи учитывает все части сигнатуры, включая настраиваемые модификаторы, типы возвращаемых значений, типы параметров, sentinels и соглашения о неуправляемых вызовах. Это двоичное сравнение.

  2. Для отражения свойства и события представляют собой скрытие по имени и подписи. Если у вас есть свойство с методом доступа get и set в базовом классе, но производный класс имеет только метод доступа get, свойство производного класса скрывает свойство базового класса, и вы не сможете получить доступ к методу задания в базовом классе.

  3. Настраиваемые атрибуты не являются частью системы общих типов.

Если текущий Type параметр представляет параметр типа в определении универсального типа или универсального метода, этот метод выполняет поиск вложенных типов ограничения класса.

Если вложенный тип является универсальным, этот метод возвращает определение универсального типа. Это верно, даже если включающий универсальный тип является закрытым сконструированным типом.

Примечание

Если текущий Type тип представляет универсальный тип, определенный в C#, Visual Basic или C++, его вложенные типы являются универсальными, даже если у них нет собственных универсальных параметров. Это не обязательно относится к вложенным типам, определенным в динамических сборках или скомпилированным с помощьюIlasm.exe (ассемблер IL).

Сведения о вложенных универсальных типах и о создании вложенных универсальных типов на основе их определений универсальных типов см. в разделе MakeGenericType.

См. также раздел

Применяется к

GetNestedType(String, BindingFlags)

Исходный код:
Type.cs
Исходный код:
Type.cs
Исходный код:
Type.cs

При переопределении в производном классе ищет указанный вложенный тип, используя заданные ограничения привязки.

public:
 abstract Type ^ GetNestedType(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
public abstract Type? GetNestedType (string name, System.Reflection.BindingFlags bindingAttr);
public abstract Type GetNestedType (string name, System.Reflection.BindingFlags bindingAttr);
abstract member GetNestedType : string * System.Reflection.BindingFlags -> Type
Public MustOverride Function GetNestedType (name As String, bindingAttr As BindingFlags) As Type

Параметры

name
String

Строка, содержащая имя искомого вложенного типа.

bindingAttr
BindingFlags

Побитовое сочетание значений перечисления, указывающих способ проведения поиска.

-или-

Default для возврата null.

Возвращаемое значение

Если поиск выполнен успешно, возвращается объект, предоставляющий вложенный тип, который соответствует указанным требованиям; в противном случае возвращается null.

Реализации

Исключения

name имеет значение null.

Комментарии

Используйте простое имя вложенного класса для name. Не квалифицируйте его с именем внешнего класса. Для универсального вложенного класса используйте искаженное имя, то есть добавить серьезный акцент и количество универсальных параметров. Например, используйте строку Inner'1, чтобы получить универсальный вложенный класс Inner<T> (Inner(Of T) в Visual Basic). Не включайте синтаксис конкретного языка для параметров типа.

BindingFlags Следующие флаги фильтра можно использовать для определения вложенных типов, которые следует включить в поиск:

  • Чтобы получить возврат, необходимо указать или BindingFlags.PublicBindingFlags.NonPublic .

  • Укажите BindingFlags.Public , чтобы включить открытые вложенные типы в поиск.

  • Укажите BindingFlags.NonPublic , чтобы включить в поиск не являющиеся открытыми вложенные типы (то есть частные, внутренние и защищенные вложенные типы).

Этот метод возвращает только вложенные типы текущего типа. Он не выполняет поиск по базовым классам текущего типа. Чтобы найти типы, вложенные в базовые классы, необходимо пройтись по иерархии наследования, вызывая GetNestedType на каждом уровне.

BindingFlags.Instance и BindingFlags.Static игнорируются.

Вызов этого метода только с флагом BindingFlags.Public или только флагом BindingFlags.NonPublic вернет указанные вложенные типы и не требует никаких других флагов.

Дополнительные сведения см. в разделе System.Reflection.BindingFlags.

Если текущий Type параметр представляет параметр типа в определении универсального типа или универсального метода, этот метод выполняет поиск вложенных типов ограничения класса.

Если вложенный тип является универсальным, этот метод возвращает определение универсального типа. Это верно, даже если включающий универсальный тип является закрытым сконструированным типом.

Примечание

Если текущий Type тип представляет универсальный тип, определенный в C#, Visual Basic или C++, его вложенные типы являются универсальными, даже если у них нет собственных универсальных параметров. Это не обязательно относится к вложенным типам, определенным в динамических сборках или скомпилированным с помощьюIlasm.exe (ассемблер IL).

Сведения о вложенных универсальных типах и о создании вложенных универсальных типов на основе их определений универсальных типов см. в разделе MakeGenericType.

См. также раздел

Применяется к