Compilation.GetTypeByMetadataName(String) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得編譯元件內的型別,以及除了只能透過外部別名) 使用其標準 CLR 中繼資料名稱來參考的元件以外, (所有參考的元件。 此查閱會遵循下列順序:
- 如果在編譯的元件中找到類型,則會傳回該類型。
-
接下來,核心程式庫 (定義
System.Object
且沒有元件參考) 搜尋的程式庫。 如果找到類型,則會傳回該類型。 - 最後,會搜尋所有其餘參考的非外部元件。 如果找到符合所提供中繼資料名稱的一個和一個類型,則會傳回該單一類型。 此檢查會忽略協助工具。
public:
Microsoft::CodeAnalysis::INamedTypeSymbol ^ GetTypeByMetadataName(System::String ^ fullyQualifiedMetadataName);
public Microsoft.CodeAnalysis.INamedTypeSymbol GetTypeByMetadataName (string fullyQualifiedMetadataName);
public Microsoft.CodeAnalysis.INamedTypeSymbol? GetTypeByMetadataName (string fullyQualifiedMetadataName);
member this.GetTypeByMetadataName : string -> Microsoft.CodeAnalysis.INamedTypeSymbol
Public Function GetTypeByMetadataName (fullyQualifiedMetadataName As String) As INamedTypeSymbol
參數
- fullyQualifiedMetadataName
- String
傳回
如果找不到類型,或在查閱期間有模棱兩可的情況,則為 Null。
備註
由於 VB 沒有外部別名的概念,因此會考慮所有參考的元件。
在 C# 中,如果核心程式庫被參考為 extern 元件,則會搜尋它。 將不會搜尋所有其他外部別名的元件。
由於在搜尋符合所提供中繼資料名稱的類型時會忽略目前元件的協助工具,因此,如果多個參考的元件定義相同的類型符號, (當使用者從 BCL 或其他來源複製已知類型時,) 則即使這些符號中所有但其中一個符號都無法存取目前元件中的使用者撰寫程式碼,也會傳回 null。 若要更精細地控制模棱兩可的解析,請考慮改用 GetTypesByMetadataName(String) ,並篩選所需的符號結果。
元件可以包含多個模組。 在每個元件中,會根據模組在該元件的模組清單中的位置來執行搜尋。 在元件中的某個模組中找到相符專案時,不會搜尋該元件內的進一步模組。
系統會忽略類型轉寄站,而且不會被視為撰寫 TypeForwardAttribute 之元件的一部分。
在每個巢狀層級上偵測到模棱兩可的情況。 例如,如果 A+B
要求 ,而且有多個 A
,但其中只有一個 B
具有巢狀類型,則會將查閱視為模棱兩可,並傳回 null。