语言

Type.GetNestedType 方法

定义

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

重载

名称 说明
GetNestedType(String)

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

GetNestedType(String, BindingFlags)

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

GetNestedType(String)

Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
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 不要使用外部类的名称来限定它。 对于泛型嵌套类,请使用乱码名称,即追加一个严重重音和泛型参数的数目。 例如,使用字符串“Inner'1”获取泛型嵌套类Inner<T>(Inner(Of T) in Visual Basic)。 不要为类型参数包含特定于语言的语法。

下表显示了通过 Get 方法在反射类型时返回的基类成员。

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

  2. 对于反射,属性和事件通过名称和签名进行隐藏。 如果基类中同时具有 get 和 set 访问器的属性,但派生类只有 get 访问器,则派生类属性将隐藏基类属性,并且无法访问基类上的 setter。

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

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

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

注释

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

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

另请参阅

适用于

GetNestedType(String, BindingFlags)

Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
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) in Visual Basic)。 不要为类型参数包含特定于语言的语法。

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

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

BindingFlags.Instance 将被 BindingFlags.Static 忽略。

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

有关详细信息,请参阅 System.Reflection.BindingFlags。

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

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

注释

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

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

另请参阅

适用于