Share via


ISymbol 介面

定義

表示編譯器所公開 (命名空間、類別、方法、參數等) 符號。

public interface class ISymbol : IEquatable<Microsoft::CodeAnalysis::ISymbol ^>
public interface ISymbol : IEquatable<Microsoft.CodeAnalysis.ISymbol>
type ISymbol = interface
    interface IEquatable<ISymbol>
Public Interface ISymbol
Implements IEquatable(Of ISymbol)
衍生
實作

備註

此介面會保留供其相關聯的 API 實作使用。 我們保留未來變更它的權利。

屬性

CanBeReferencedByName

如果此符號可以透過程式碼中的名稱來參考,則傳回 true。

ContainingAssembly

IAssemblySymbol取得包含元件的 。 如果符號在多個元件之間共用,則傳回 null。

ContainingModule

IModuleSymbol取得包含模組的 。 如果符號在多個模組之間共用,則傳回 null。

ContainingNamespace

INamespaceSymbol取得最接近封入命名空間的 。 如果符號未包含在命名空間中,則傳回 null。

ContainingSymbol

ISymbol取得立即包含符號之 的 。

ContainingType

INamedTypeSymbol取得包含型別的 。 如果符號未包含在類型內,則傳回 null。

DeclaredAccessibility

取得 , Accessibility 表示符號的宣告協助工具。 如果未宣告協助工具,則傳回 NotApplicable。

DeclaringSyntaxReferences

取得語法節點 () 此符號在來源中宣告的位置。 例如,某些符號 (,部分類別) 可能定義于多個位置。 只有當符號是在原始程式碼中宣告,而且未隱含宣告時,這個屬性才應該傳回一或多個語法節點, (請參閱 IsImplicitlyDeclared 屬性) 。

請注意,針對命名空間符號,宣告語法可能會宣告巢狀命名空間。 例如,「namespace N1」 中 N1 的宣告語法節點。N2 {...}」 是 N1 的整個 NamespaceDeclarationSyntax。N2. 針對全域命名空間,宣告語法會是 CompilationUnitSyntax。

HasUnsupportedMetadata

表示此符號使用語言無法支援的中繼資料。

範例包括:

  • VB 中的指標類型
  • ByRef 傳回類型
  • 必要的自訂修飾詞

這與未參考之元件中定義的中繼資料符號參考不同。 傳回 true 的符號永遠不會成功使用,因此不應該出現在任何 IDE 功能中。

這會針對中繼資料符號進行設定,如下所示:

  • 類型 - 例如,如果不支援類型 (,則指標類型)
  • 方法 - 不支援參數或傳回類型
  • 欄位 - 不支援類型
  • 事件 - 不支援類型
  • 屬性 - 不支援類型
  • 參數 - 不支援類型
IsAbstract

取得值,指出符號是否為抽象。

IsDefinition

取得值,指出符號是否為原始定義。 如果符號衍生自另一個符號,則傳回 false,方法是依實例的類型替代。

IsExtern

取得值,指出符號是否在外部定義。

IsImplicitlyDeclared

如果編譯器會自動建立此符號,而且沒有明確的對應原始程式碼宣告,則傳回 true。

IsOverride

取得值,指出符號是否為基類符號的覆寫。

IsSealed

取得值,指出符號是否為密封。

IsStatic

取得值,指出符號是否為靜態。

IsVirtual

取得值,指出符號是否為虛擬。

Kind

取得 , SymbolKind 指出其為何種符號。

Language

取得來來源語言 (「C#」 或 「Visual Basic」) 。

Locations

取得原本在來源或中繼資料中定義符號的位置。 例如,某些符號 (,部分類別) 可能定義于多個位置。

MetadataName

取得在中繼資料中顯示的符號名稱。 在大部分情況下,這與 Name 屬性相同,但有下列例外狀況:

  1. 泛型型別的中繼資料名稱包含 「'1」、「'2」 等尾碼,指出其不包含類型 (參數的數目,不過,不包含類型或命名空間的名稱) 。
  2. 相較于 name 屬性,明確介面名稱的中繼資料名稱已移除空格。
  3. 名稱的長度限制為不超過中繼資料限制。
MetadataToken

取得與此符號相關聯的元資料標記,如果未從中繼資料載入符號,則為 0。

Name

取得符號名稱。 如果未命名,則傳回空字串。

OriginalDefinition

ISymbol取得符號原始定義的 。 如果此符號衍生自另一個符號,則依類型替代來取得原始符號,如同來源或中繼資料中所定義。

方法

Accept(SymbolVisitor)

表示編譯器所公開 (命名空間、類別、方法、參數等) 符號。

Accept<TArgument,TResult>(SymbolVisitor<TArgument,TResult>, TArgument)

表示編譯器所公開 (命名空間、類別、方法、參數等) 符號。

Accept<TResult>(SymbolVisitor<TResult>)

表示編譯器所公開 (命名空間、類別、方法、參數等) 符號。

Equals(ISymbol, SymbolEqualityComparer)

根據所提供的規則,判斷此符號是否等於另一個符號 SymbolEqualityComparer

GetAttributes()

取得符號的屬性。 如果沒有屬性,則傳回空 IEnumerable<T> 的。

GetDocumentationCommentId()

傳回符號的檔批註識別碼,如果符號不支援檔批註,則為 null。

GetDocumentationCommentXml(CultureInfo, Boolean, CancellationToken)

取得 XML (做為與符號相關聯之批註的文字) 。

ToDisplayParts(SymbolDisplayFormat)

將符號轉換成字串元件陣列,其中每個元件都有一種。 適合用於著色顯示字串。

ToDisplayString(SymbolDisplayFormat)

將符號轉換成字串表示。

ToMinimalDisplayParts(SemanticModel, Int32, SymbolDisplayFormat)

將符號轉換成字串元件陣列,其中每個元件都有一種。 可以針對原始程式碼中的特定位置量身打造。 適合用於著色顯示字串。

ToMinimalDisplayString(SemanticModel, Int32, SymbolDisplayFormat)

將符號轉換成可向使用者顯示的字串。 可以針對原始程式碼中的特定位置量身打造。

擴充方法

IsMustOverride(ISymbol)

表示編譯器所公開 (命名空間、類別、方法、參數等) 符號。

IsNotOverridable(ISymbol)

表示編譯器所公開 (命名空間、類別、方法、參數等) 符號。

IsOverridable(ISymbol)

表示編譯器所公開 (命名空間、類別、方法、參數等) 符號。

IsOverrides(ISymbol)

表示編譯器所公開 (命名空間、類別、方法、參數等) 符號。

IsShared(ISymbol)

判斷符號是否為共用。

適用於