Type.GetNestedType 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取嵌套在当前 Type 中的特定类型。
重载
GetNestedType(String) |
搜索具有指定名称的公共嵌套类型。 |
GetNestedType(String, BindingFlags) |
当在派生类中重写时,使用指定绑定约束搜索指定嵌套类型。 |
GetNestedType(String)
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- 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”获取 Visual Basic) Inner(Of T)
中的泛型嵌套类Inner<T>
(。 不要为类型参数包含特定于语言的语法。
下表显示了在对类型进行反射时,方法将返回 Get
基类的哪些成员。
成员类型 | 静态 | 非静态 |
---|---|---|
构造函数 | 否 | 否 |
字段 | 否 | 可以。 字段始终按名称和签名隐藏。 |
事件 | 不适用 | 常见的类型系统规则是继承与实现 属性的方法的继承相同。 反射将属性视为按名称和签名隐藏。 请参阅下面的说明 2。 |
方法 | 否 | 可以。 (虚拟和非虚拟) 的方法可以是按名称隐藏或按名称和签名隐藏。 |
嵌套类型 | 否 | 否 |
properties | 不适用 | 常见的类型系统规则是继承与实现 属性的方法的继承相同。 反射将属性视为按名称和签名隐藏。 请参阅下面的说明 2。 |
按名称隐藏和签名考虑签名的所有部分,包括自定义修饰符、返回类型、参数类型、sentinels 和非托管调用约定。 这是二进制比较。
为了反射,属性和事件是按名称和签名隐藏的。 如果基类中有一个同时具有 get 和 set 访问器的属性,但派生类只有一个 get 访问器,则派生类属性将隐藏基类属性,并且你将无法访问基类上的 setter。
自定义属性不是通用类型系统的一部分。
如果当前 Type 表示泛型类型或泛型方法的定义中的类型参数,则此方法搜索类约束的嵌套类型。
如果嵌套类型是泛型类型,则此方法返回其泛型类型定义。 即使封闭泛型类型是封闭的构造类型,也是如此。
注意
如果当前 Type 表示在 C#、Visual Basic 或 C++ 中定义的泛型类型,则其嵌套类型都是泛型类型,即使它们本身没有泛型参数也是如此。 对于在动态程序集中定义或使用 Ilasm.exe (IL 汇编程序) 编译的 嵌套类型不一定如此。
有关嵌套泛型类型以及从其泛型类型定义构造嵌套泛型类型的信息,请参阅 MakeGenericType。
另请参阅
适用于
GetNestedType(String, BindingFlags)
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- 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
包含要获取的嵌套类型的名称的字符串。
返回
表示符合指定要求的嵌套类型的对象(如果找到的话);否则为 null
。
实现
例外
name
为 null
。
注解
为 使用嵌套类 name
的简单名称。 不要使用外部类的名称来限定它。 对于泛型嵌套类,请使用整型名称- 即追加重音符和泛型参数数。 例如,使用字符串“Inner'1”获取 Visual Basic) Inner(Of T)
中的泛型嵌套类Inner<T>
(。 不要为类型参数包含特定于语言的语法。
以下 BindingFlags 筛选器标志可用于定义要在搜索中包括的嵌套类型:
必须指定 BindingFlags.Public 或 BindingFlags.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。