Sdílet prostřednictvím


CodeClass.InfoLocation – vlastnost

Získá schopnosti modelu kódu.

Obor názvů:  EnvDTE
Sestavení:  EnvDTE (v EnvDTE.dll)

Syntaxe

'Deklarace
ReadOnly Property InfoLocation As vsCMInfoLocation
vsCMInfoLocation InfoLocation { get; }
property vsCMInfoLocation InfoLocation {
    vsCMInfoLocation get ();
}
abstract InfoLocation : vsCMInfoLocation
function get InfoLocation () : vsCMInfoLocation

Hodnota vlastnosti

Typ: EnvDTE.vsCMInfoLocation
A vsCMInfoLocation konstantní hodnotu.

Poznámky

Pokud InfoLocation vrátí vsCMInfoLocationProject, pak můžete nastavit vlastnosti, získat StartPoint, získat EndPoint, a tak dále.Po přechodu z jednoho kódu modelu objektu (A) do jiného (B) – například z funkce jejich typu nebo třídy na základní třída – B mohou být typu vsCMInfoLocationExternal -li jeho definice v jiném projektu.Odstraňování závisí na implementaci modelu kódu, zda objekt b projektu je implementováno ve stejném jazyce jako objekt a atd.

Pokud InfoLocation vrátí vsCMInfoLocationExternal, je k dispozici, pouze z metadat inspekci knihovny DLL nebo ze zmrazených zdrojů informací.Je možné získat StartPoint a EditPoint, ale nelze upravit dokument.Nelze nastavit vlastnosti nebo změnit text za prvek kódu.

Pokud InfoLocation vrátí vsCMInfoLocationNone, pak je k dispozici pouze objekt modelu kódu, který má název.Také na základě kontextu zdrojového kódu, v některých případech můžete zjistit zda název by měl být třídy nebo rozhraní.V této situaci protože kód modelu nelze přeložit název veškeré užitečné informace, objekt je však jinak nepoužitelné.

[!POZNÁMKA]

Není deterministický může být po provedení určité typy úprav, což znamená, že jejich hodnoty nelze dovolávat vždy zůstat stejné hodnoty prvků modelu kód jako třídy, struktury, funkce, atributy, delegátů a tak dále.Další informace naleznete v části Změna hodnoty prvku modelu kódu Zjištění kódu pomocí kódu modelu (Visual Basic).

Příklady

 Sub InfoLocationExample(ByVal dte As DTE2)

    ' Before running this example, open a code document from a project
    ' and place the insertion point inside a class definition.
    Try
        ' Retrieve the CodeClass at the insertion point.
        Dim sel As TextSelection = _
            CType(dte.ActiveDocument.Selection, TextSelection)
        Dim cls As CodeClass = _
            CType(sel.ActivePoint.CodeElement( _
            vsCMElement.vsCMElementClass), CodeClass)

        ' Display the class's location.
        MsgBox(cls.Name & "'s InfoLocation value is " & _
            cls.InfoLocation.ToString())

        Dim cm As CodeModel = _
            cls.ProjectItem.ContainingProject.CodeModel
        Dim name As String = ConvertFullName(cm, "System.Object")
        Dim obj As CodeType = cm.CodeTypeFromFullName(name)

        ' Display System.Object's location.
        MsgBox(obj.FullName & "'s InfoLocation value is " & _
            obj.InfoLocation.ToString())
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub

Function ConvertFullName(ByVal cm As CodeModel, _
    ByVal fullName As String) As String

    ' Convert a .NET type name into a C++ type name.
    If (cm.Language = CodeModelLanguageConstants.vsCMLanguageVC) Or _
        (cm.Language = CodeModelLanguageConstants.vsCMLanguageMC) Then
        Return fullName.Replace(".", "::")
    Else
        Return fullName
    End If

End Function
public void InfoLocationExample(DTE2 dte)
{
    // Before running this example, open a code document from a project
    // and place the insertion point inside a class definition.
    try
    {
        // Retrieve the CodeClass at the insertion point.
        TextSelection sel = 
            (TextSelection)dte.ActiveDocument.Selection;
        CodeClass cls = 
            (CodeClass)sel.ActivePoint.get_CodeElement(
            vsCMElement.vsCMElementClass);

        // Display the class's location.
        MessageBox.Show(cls.Name + "'s InfoLocation value is " + 
            cls.InfoLocation.ToString());

        CodeModel cm = cls.ProjectItem.ContainingProject.CodeModel;
        string name = ConvertFullName(cm, "System.Object");
        CodeType obj = cm.CodeTypeFromFullName(name);

        // Display System.Object's location.
        MessageBox.Show(obj.FullName + "'s InfoLocation value is " + 
            obj.InfoLocation.ToString());
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

string ConvertFullName(CodeModel cm, string fullName)
{
    // Convert a .NET type name into a C++ type name.
    if ((cm.Language == CodeModelLanguageConstants.vsCMLanguageVC) || 
        (cm.Language == CodeModelLanguageConstants.vsCMLanguageMC))
        return fullName.Replace(".", "::");
    else
        return fullName;
}

Zabezpečení rozhraní .NET Framework

Viz také

Referenční dokumentace

CodeClass Rozhraní

EnvDTE – obor názvů

Další zdroje

Jak: kompilace a spuštění příkladů kódu automatizace objektu modelu

Zjištění kódu pomocí kódu modelu (Visual Basic)

Zjištění kódu pomocí kódu modelu (Visual C#)