Type.GetNestedType 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
讓特定類型在目前的 Type 內變成巢狀。
多載
GetNestedType(String) |
搜尋具有指定名稱的公用巢狀類型。 |
GetNestedType(String, BindingFlags) |
在衍生類別中覆寫時,使用指定的繫結條件約束搜尋指定的巢狀類型。 |
GetNestedType(String)
- 來源:
- Type.cs
- 來源:
- Type.cs
- 來源:
- 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
回基類的成員。
成員類型 | Static | 非靜態 |
---|---|---|
建構函式 | 否 | 否 |
欄位 | 否 | 可以。 欄位一律會依名稱與簽章隱藏。 |
事件 | 不適用 | 常見的類型系統規則是繼承與實作 屬性的方法相同。 反映會將屬性視為依名稱與簽章隱藏。 請參閱下面的附注 2。 |
方法 | 否 | 可以。 (虛擬和非虛擬) 的方法可以是依名稱隱藏或依名稱隱藏和簽章。 |
巢狀類型 | 否 | 否 |
屬性 | 不適用 | 常見的類型系統規則是繼承與實作 屬性的方法相同。 反映會將屬性視為依名稱與簽章隱藏。 請參閱下面的附注 2。 |
隱藏名稱與簽章會考慮簽章的所有部分,包括自訂修飾詞、傳回型別、參數類型、sentinels 和 Unmanaged 呼叫慣例。 這是二進位比較。
對於反映,屬性和事件會依名稱與簽章隱藏。 如果您的屬性同時具有基類中的 get 和 set 存取子,但衍生類別只有 get 存取子,則衍生類別屬性會隱藏基類屬性,而且您將無法存取基類上的 setter。
自訂屬性不是一般型別系統的一部分。
如果目前 Type 代表泛型型別或泛型方法定義中的型別參數,這個方法會搜尋類別條件約束的巢狀類型。
如果巢狀類型為泛型,這個方法會傳回其泛型型別定義。 即使封入泛型型別是封閉式建構型別,也是如此。
注意
如果目前 Type 代表 C#、Visual Basic 或 C++ 中定義的泛型型別,即使它們本身沒有泛型參數,其巢狀類型也是全部泛型。 這不一定是動態元件中定義的巢狀類型,也不一定是使用 Ilasm.exe (IL 組合器編譯) 。
如需巢狀泛型型別的相關資訊,以及從其泛型型別定義建構巢狀泛型型別的詳細資訊,請參閱 MakeGenericType 。
另請參閱
適用於
GetNestedType(String, BindingFlags)
- 來源:
- Type.cs
- 來源:
- Type.cs
- 來源:
- 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 。