Type.GetNestedType 方法

定义

获取嵌套在当前 Type 中的特定类型。

重载

GetNestedType(String)

搜索具有指定名称的公共嵌套类型。

GetNestedType(String, BindingFlags)

当在派生类中重写时,使用指定绑定约束搜索指定嵌套类型。

GetNestedType(String)

搜索具有指定名称的公共嵌套类型。

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

实现

例外

namenull

注解

搜索区分 name 大小写。

为 使用嵌套类 name的简单名称。 不要使用外部类的名称来限定它。 对于泛型嵌套类,请使用整型名称 - 即追加重音符和泛型参数数。 例如,使用字符串“Inner'1”获取 Visual Basic) Inner(Of T) 中的泛型嵌套类Inner<T> (。 不要为类型参数包含特定于语言的语法。

下表显示了在对类型进行反射时,方法将返回 Get 基类的哪些成员。

成员类型 静态 非静态
构造函数
字段 可以。 字段始终按名称和签名隐藏。
事件 不适用 常见的类型系统规则是继承与实现 属性的方法的继承相同。 反射将属性视为按名称和签名隐藏。 请参阅下面的说明 2。
方法 可以。 (虚拟和非虚拟) 的方法可以是按名称隐藏或按名称和签名隐藏。
嵌套类型
properties 不适用 常见的类型系统规则是继承与实现 属性的方法的继承相同。 反射将属性视为按名称和签名隐藏。 请参阅下面的说明 2。
  1. 按名称隐藏和签名考虑签名的所有部分,包括自定义修饰符、返回类型、参数类型、sentinels 和非托管调用约定。 这是二进制比较。

  2. 为了反射,属性和事件是按名称和签名隐藏的。 如果基类中有一个同时具有 get 和 set 访问器的属性,但派生类只有一个 get 访问器,则派生类属性将隐藏基类属性,并且你将无法访问基类上的 setter。

  3. 自定义属性不是通用类型系统的一部分。

如果当前 Type 表示泛型类型或泛型方法的定义中的类型参数,则此方法搜索类约束的嵌套类型。

如果嵌套类型是泛型类型,则此方法返回其泛型类型定义。 即使封闭泛型类型是封闭的构造类型,也是如此。

注意

如果当前 Type 表示在 C#、Visual Basic 或 C++ 中定义的泛型类型,则其嵌套类型都是泛型类型,即使它们本身没有泛型参数也是如此。 对于在动态程序集中定义或使用 Ilasm.exe (IL 汇编程序) 编译的 嵌套类型不一定如此。

有关嵌套泛型类型以及从其泛型类型定义构造嵌套泛型类型的信息,请参阅 MakeGenericType

另请参阅

适用于

GetNestedType(String, BindingFlags)

当在派生类中重写时,使用指定绑定约束搜索指定嵌套类型。

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

实现

例外

namenull

注解

为 使用嵌套类 name的简单名称。 不要使用外部类的名称来限定它。 对于泛型嵌套类,请使用整型名称- 即追加重音符和泛型参数数。 例如,使用字符串“Inner'1”获取 Visual Basic) Inner(Of T) 中的泛型嵌套类Inner<T> (。 不要为类型参数包含特定于语言的语法。

以下 BindingFlags 筛选器标志可用于定义要在搜索中包括的嵌套类型:

此方法仅返回当前类型的嵌套类型。 它不会搜索当前类型的基类。 若要查找嵌套在基类中的类型,必须在每个级别调用 GetNestedType 继承层次结构。

BindingFlags.InstanceBindingFlags.Static 会被忽略。

BindingFlags.Public 使用 标志或仅 BindingFlags.NonPublic 使用 标志调用此方法将返回指定的嵌套类型,不需要任何其他标志。

有关更多信息,请参见System.Reflection.BindingFlags

如果当前 Type 表示泛型类型或泛型方法的定义中的类型参数,则此方法搜索类约束的嵌套类型。

如果嵌套类型是泛型类型,则此方法返回其泛型类型定义。 即使封闭泛型类型是封闭的构造类型,也是如此。

注意

如果当前 Type 表示在 C#、Visual Basic 或 C++ 中定义的泛型类型,则其嵌套类型都是泛型类型,即使它们本身没有泛型参数也是如此。 对于在动态程序集中定义或使用 Ilasm.exe (IL 汇编程序) 编译的 嵌套类型不一定如此。

有关嵌套泛型类型以及从其泛型类型定义构造嵌套泛型类型的信息,请参阅 MakeGenericType

另请参阅

适用于