Type.GetNestedType Метод

Определение

Возвращает определенный тип, вложенный в текущий объект Type.Gets a specific type nested within the current Type.

Перегрузки

GetNestedType(String, BindingFlags)

При переопределении в производном классе ищет указанный вложенный тип, используя заданные ограничения привязки.When overridden in a derived class, searches for the specified nested type, using the specified binding constraints.

GetNestedType(String)

Выполняет поиск открытого вложенного типа с заданным именем.Searches for the public nested type with the specified name.

GetNestedType(String, BindingFlags)

При переопределении в производном классе ищет указанный вложенный тип, используя заданные ограничения привязки.When overridden in a derived class, searches for the specified nested type, using the specified binding constraints.

public:
 abstract Type ^ GetNestedType(System::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

Строка, содержащая имя искомого вложенного типа.The string containing the name of the nested type to get.

bindingAttr
BindingFlags

Побитовое сочетание значений перечисления, указывающих способ проведения поиска.A bitwise combination of the enumeration values that specify how the search is conducted.

-или--or- Default для возврата null.Default to return null.

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

Если поиск выполнен успешно, возвращается объект, предоставляющий вложенный тип, который соответствует указанным требованиям; в противном случае возвращается null.An object representing the nested type that matches the specified requirements, if found; otherwise, null.

Реализации

Исключения

Свойство name имеет значение null.name is null.

Комментарии

Используйте простое имя вложенного класса для name.Use the simple name of the nested class for name. Не указывайте имя внешнего класса.Do not qualify it with the name of the outer class. Для универсального вложенного класса используйте искаженное имя, то есть добавьте знак ударения и число универсальных параметров.For a generic nested class, use the mangled name - that is, append a grave accent and the number of generic parameters. Например, используйте строку "Inner`1", чтобы получить универсальный вложенный класс Inner<T> (Inner(Of T) в Visual Basic).For example, use the string "Inner`1" to get the generic nested class Inner<T> (Inner(Of T) in Visual Basic). Не включайте синтаксис для параметров типа, зависящий от языка.Do not include language-specific syntax for type parameters.

Для определения вложенных типов, включаемых в поиск, можно использовать следующие флаги фильтра BindingFlags.The following BindingFlags filter flags can be used to define which nested types to include in the search:

  • Чтобы получить возвращаемое значение, необходимо указать либо BindingFlags.Public, либо BindingFlags.NonPublic.You must specify either BindingFlags.Public or BindingFlags.NonPublic to get a return.

  • Укажите BindingFlags.Public, чтобы включить в поиск открытые вложенные типы.Specify BindingFlags.Public to include public nested types in the search.

  • Укажите BindingFlags.NonPublic, чтобы включить в поиск не являющиеся открытыми вложенные типы (т. е. частные, внутренние и защищенные вложенные типы).Specify BindingFlags.NonPublic to include non-public nested types (that is, private, internal, and protected nested types) in the search.

Этот метод возвращает только вложенные типы текущего типа.This method returns only the nested types of the current type. Он не выполняет поиск базовых классов текущего типа.It does not search the base classes of the current type. Чтобы найти типы, вложенные в базовые классы, необходимо пройти по иерархии наследования, вызвав GetNestedType на каждом уровне.To find types that are nested in base classes, you must walk the inheritance hierarchy, calling GetNestedType at each level.

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

Вызов этого метода только с флагом BindingFlags.Public или только с флагом BindingFlags.NonPublic возвратит указанные вложенные типы и не требует других флагов.Calling this method with only the BindingFlags.Public flag or only the BindingFlags.NonPublic flag will return the specified nested types and does not require any other flags.

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

Если текущий Type представляет параметр типа в определении универсального типа или универсального метода, этот метод выполняет поиск вложенных типов ограничения класса.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the nested types of the class constraint.

Если вложенный тип является универсальным, этот метод возвращает определение универсального типа.If a nested type is generic, this method returns its generic type definition. Это справедливо, даже если включающий универсальный тип является закрытым сконструированным типом.This is true even if the enclosing generic type is a closed constructed type.

Примечание

Если текущий Type представляет универсальный тип, определенный в C#, Visual Basic или C++, его вложенные типы являются универсальными, даже если у них нет универсальных параметров.If the current Type represents a generic type defined in C#, Visual Basic, or C++, its nested types are all generic even if they have no generic parameters of their own. Это не всегда справедливо для вложенных типов, определенных в динамических сборках или скомпилированных с помощью Ilasm. exe (ассемблера IL).This is not necessarily true of nested types defined in dynamic assemblies or compiled with the Ilasm.exe (IL Assembler).

Сведения о вложенных универсальных типах и конструировании вложенных универсальных типов из их определений универсальных типов см. в разделе MakeGenericType.For information on nested generic types, and on constructing nested generic types from their generic type definitions, see MakeGenericType.

Дополнительно

GetNestedType(String)

Выполняет поиск открытого вложенного типа с заданным именем.Searches for the public nested type with the specified name.

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

Параметры

name
String

Строка, содержащая имя искомого вложенного типа.The string containing the name of the nested type to get.

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

Объект, представляющий открытый вложенный тип с указанным именем, если тип есть, и null, если такого типа нет.An object representing the public nested type with the specified name, if found; otherwise, null.

Реализации

Исключения

Свойство name имеет значение null.name is null.

Комментарии

При поиске name учитывается регистр.The search for name is case-sensitive.

Используйте простое имя вложенного класса для name.Use the simple name of the nested class for name. Не указывайте имя внешнего класса.Do not qualify it with the name of the outer class. Для универсального вложенного класса используйте искаженное имя, то есть добавьте знак ударения и число универсальных аргументов.For a generic nested class, use the mangled name - that is, append a grave accent and the number of generic arguments. Например, используйте строку "Inner`1", чтобы получить универсальный вложенный класс Inner<T> (Inner(Of T) в Visual Basic).For example, use the string "Inner`1" to get the generic nested class Inner<T> (Inner(Of T) in Visual Basic). Не включайте синтаксис для параметров типа, зависящий от языка.Do not include language-specific syntax for type parameters.

В следующей таблице показаны элементы базового класса, возвращаемые методами Get при отражении в типе.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Тип элементаMember Type StaticStatic Не статическийNon-Static
КонструкторConstructor НетNo НетNo
ПолеField НетNo Да.Yes. Поле всегда скрывается по имени и сигнатуре.A field is always hide-by-name-and-signature.
СобытиеEvent НеприменимоNot applicable Правило системы общих типов — это то же наследование, что и методы, реализующие свойство.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Отражение рассматривает свойства как скрытые по имени и сигнатуре.Reflection treats properties as hide-by-name-and-signature. См. Примечание 2 ниже.See note 2 below.
МетодMethod НетNo Да.Yes. Метод (как виртуальный, так и невиртуальный) может быть скрыт по имени или скрытию по имени и сигнатуре.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Вложенный типNested Type НетNo НетNo
СвойствоProperty НеприменимоNot applicable Правило системы общих типов — это то же наследование, что и методы, реализующие свойство.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Отражение рассматривает свойства как скрытые по имени и сигнатуре.Reflection treats properties as hide-by-name-and-signature. См. Примечание 2 ниже.See note 2 below.
  1. При скрытии по имени и сигнатуре учитываются все части сигнатуры, включая пользовательские модификаторы, возвращаемые типы, типы параметров, Sentinel и неуправляемые соглашения о вызовах.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Это двоичное сравнение.This is a binary comparison.

  2. Для отражения свойства и события скрываются по имени и сигнатуре.For reflection, properties and events are hide-by-name-and-signature. Если у вас есть свойство с методом доступа get и Set в базовом классе, но производный класс имеет только метод доступа get, свойство производного класса скрывает свойство базового класса, и вы не сможете получить доступ к методу задания в базовом классе.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Настраиваемые атрибуты не являются частью системы общих типов.Custom attributes are not part of the common type system.

Если текущий Type представляет параметр типа в определении универсального типа или универсального метода, этот метод выполняет поиск вложенных типов ограничения класса.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the nested types of the class constraint.

Если вложенный тип является универсальным, этот метод возвращает определение универсального типа.If a nested type is generic, this method returns its generic type definition. Это справедливо, даже если включающий универсальный тип является закрытым сконструированным типом.This is true even if the enclosing generic type is a closed constructed type.

Примечание

Если текущий Type представляет универсальный тип, определенный в C#, Visual Basic или C++, его вложенные типы являются универсальными, даже если у них нет универсальных параметров.If the current Type represents a generic type defined in C#, Visual Basic, or C++, its nested types are all generic even if they have no generic parameters of their own. Это не всегда справедливо для вложенных типов, определенных в динамических сборках или скомпилированных с помощью Ilasm. exe (ассемблера IL).This is not necessarily true of nested types defined in dynamic assemblies or compiled with the Ilasm.exe (IL Assembler).

Сведения о вложенных универсальных типах и конструировании вложенных универсальных типов из их определений универсальных типов см. в разделе MakeGenericType.For information on nested generic types, and on constructing nested generic types from their generic type definitions, see MakeGenericType.

Дополнительно

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