Type.GetNestedType Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает определенный тип, вложенный в текущий Type.
Перегрузки
| Имя | Описание |
|---|---|
| GetNestedType(String, BindingFlags) |
При переопределении в производном классе выполняет поиск указанного вложенного типа с помощью указанных ограничений привязки. |
| GetNestedType(String) |
Ищет общедоступный вложенный тип с указанным именем. |
GetNestedType(String, BindingFlags)
- Исходный код:
- Type.cs
- Исходный код:
- Type.cs
- Исходный код:
- Type.cs
- Исходный код:
- Type.cs
- Исходный код:
- Type.cs
При переопределении в производном классе выполняет поиск указанного вложенного типа с помощью указанных ограничений привязки.
public:
abstract Type ^ GetNestedType(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes)]
public abstract Type? GetNestedType(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);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes)>]
abstract member GetNestedType : string * System.Reflection.BindingFlags -> Type
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.
См. также раздел
Применяется к
GetNestedType(String)
- Исходный код:
- Type.cs
- Исходный код:
- Type.cs
- Исходный код:
- Type.cs
- Исходный код:
- Type.cs
- Исходный код:
- Type.cs
Ищет общедоступный вложенный тип с указанным именем.
public:
Type ^ GetNestedType(System::String ^ name);
public:
virtual Type ^ GetNestedType(System::String ^ name);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes)]
public Type? GetNestedType(string name);
public Type GetNestedType(string name);
public Type? GetNestedType(string name);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes)>]
member this.GetNestedType : string -> Type
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 чувствителен к регистру.
Используйте простое имя вложенного класса для name. Не подсовывайте его именем внешнего класса. Для универсального вложенного класса используйте имя, то есть добавьте серьезный акцент и число универсальных аргументов. Например, используйте строку "Inner'1", чтобы получить универсальный вложенный класс Inner<T> (Inner(Of T) в Visual Basic). Не включайте синтаксис для параметров типа для конкретного языка.
В следующей таблице показано, какие элементы базового класса возвращаются Get методами при отражении типа.
| Тип участника | Статика | Нестатическое |
|---|---|---|
| Конструктор | Нет | Нет |
| Поле | Нет | Да. Поле всегда скрывается по имени и подписи. |
| Event | Неприменимо | Правило системы общего типа заключается в том, что наследование следует тем же правилам, что и методы, реализующие свойство. Отражение обрабатывает свойства как скрытие по имени и сигнатуре. См. примечание 2 ниже. |
| Метод | Нет | Да. Метод (виртуальный и не виртуальный) может быть скрыт по имени или как по имени, так и по подписи. |
| Вложенный тип | Нет | Нет |
| Недвижимость | Неприменимо | Правило системы общего типа заключается в том, что наследование следует тем же правилам, что и методы, реализующие свойство. Отражение обрабатывает свойства как скрытие по имени и сигнатуре. См. примечание 2 ниже. |
Скрытие по имени и сигнатуре учитывает все части подписи, включая настраиваемые модификаторы, возвращаемые типы, типы параметров, sentinels и неуправляемые соглашения о вызовах. Это двоичное сравнение.
Для отражения свойства и события скрываются по имени и сигнатуре. Если у вас есть свойство с методами get и set в базовом классе, но производный класс имеет только метод get, свойство производного класса перекрывает свойство базового класса, и вы не сможете получить доступ к методу set в базовом классе.
Пользовательские атрибуты не являются частью общей системы типов.
Если текущий Type представляет параметр типа в определении универсального типа или универсального метода, этот метод выполняет поиск вложенных типов ограничения класса.
Если вложенный тип является универсальным, этот метод возвращает определение универсального типа. Это верно, даже если заключенный универсальный тип является закрытым созданным типом.
Замечание
Если текущий Type представляет универсальный тип, определенный в C#, Visual Basic или C++, вложенные типы являются универсальными, даже если у них нет универсальных параметров. Это не обязательно верно для вложенных типов, определенных в динамических сборках или скомпилированных с помощьюIlasm.exe (сборщик IL).
Сведения о вложенных универсальных типах и создании вложенных универсальных типов из определений универсальных типов см. в разделе MakeGenericType.