Udostępnij za pośrednictwem


Właściwość CodeClass.InfoLocation —

Pobiera możliwości modelu kodu.

Przestrzeń nazw:  EnvDTE
Zestaw:  EnvDTE (w EnvDTE.dll)

Składnia

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

Wartość właściwości

Typ: EnvDTE.vsCMInfoLocation
A vsCMInfoLocation wartość stałą.

Uwagi

Jeśli InfoLocation zwraca vsCMInfoLocationProject, a następnie można ustawić właściwości, uzyskania StartPoint, uzyskania EndPoint, itd.Przejściu z jednego kodu modelu obiektu (A) do (B) — np. z funkcji jego typu, lub z klasy do swojej klasy bazowej — B może być typu vsCMInfoLocationExternal , jeśli jego definicja jest w innym projekcie.Dyspozycja zależy od wdrożenia modelu kodu, czy obiekt b projekt jest realizowany w tym samym języku co obiekt a i tak dalej.

Jeśli InfoLocation zwraca vsCMInfoLocationExternal, a następnie informacje są dostępne tylko z metadanych, z biblioteki DLL inspekcji lub mrożonych źródeł.Może być w stanie uzyskać StartPoint i EditPoint, ale nie można edytować dokumentu.Oznacza to, że nie można ustawić właściwości lub zmodyfikować tekst pod elementem kodu.

Jeśli InfoLocation zwraca vsCMInfoLocationNone, a następnie wszystkie, który jest dostępny jest obiekt modelu kodu, który ma nazwę.Ponadto na podstawie kontekstu kodu źródłowego, w niektórych przypadkach można stwierdzić czy nazwa powinna być klasy lub interfejsu.W tej sytuacji jednak ponieważ model kodu nie można rozpoznać nazwy wszelkie użyteczne informacje, obiekt jest inaczej bezużyteczne.

[!UWAGA]

Po dokonaniu niektórych rodzajów modyfikacji, co oznacza, że ich wartości nie może polegać na zawsze pozostawać taki sam może być nie deterministyczny wartości elementów modelu kodu, takich jak klasy, strukturach, funkcje, atrybuty, delegatów i tak dalej.Aby uzyskać więcej informacji, zobacz sekcję wartości elementu modelu kod można zmienić w Odnajdowanie kodu za pomocą modelu kodu (Visual Basic).

Przykłady

 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;
}

Zabezpieczenia programu .NET Framework

Zobacz też

Informacje

CodeClass Interfejs

Przestrzeń nazw EnvDTE

Inne zasoby

Porady: kompilowanie i uruchamianie kodu modelu obiektów automatyzacji — przykłady

Odnajdowanie kodu za pomocą modelu kodu (Visual Basic)

Odnajdowanie kodu za pomocą modelu kodu (Visual C#)