CodeClass2.InfoLocation Propriété

Définition

Obtient les fonctionnalités du modèle de code.

public:
 property EnvDTE::vsCMInfoLocation InfoLocation { EnvDTE::vsCMInfoLocation get(); };
public:
 property EnvDTE::vsCMInfoLocation InfoLocation { EnvDTE::vsCMInfoLocation get(); };
[System.Runtime.InteropServices.DispId(7)]
public EnvDTE.vsCMInfoLocation InfoLocation { [System.Runtime.InteropServices.DispId(7)] [System.Runtime.InteropServices.TypeLibFunc(1024)] get; }
[<System.Runtime.InteropServices.DispId(7)>]
[<get: System.Runtime.InteropServices.DispId(7)>]
[<get: System.Runtime.InteropServices.TypeLibFunc(1024)>]
member this.InfoLocation : EnvDTE.vsCMInfoLocation
Public ReadOnly Property InfoLocation As vsCMInfoLocation

Valeur de propriété

vsCMInfoLocation

Valeur de constante vsCMInfoLocation.

Implémente

Attributs

Exemples

[Visual Basic]

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  

[C#]

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

Remarques

Si la InfoLocation propriété retourne vsCMInfoLocationProject , vous pouvez définir des propriétés, obtenir un StartPoint , obtenir un EndPoint , et ainsi de suite. Lorsque vous passez d’un objet de modèle de code (A) à un autre (B), par exemple d’une fonction à son type ou d’une classe à sa classe de base, B peut être de type vsCMInfoLocationExternal si sa définition se trouve dans un autre projet. La disposition dépend de l’implémentation du modèle de code, si le projet de l’objet B est implémenté dans le même langage que l’objet A, et ainsi de suite.

Si InfoLocation retourne vsCMInfoLocationExternal , les informations sont uniquement disponibles à partir des métadonnées, de l’inspection d’une dll ou de sources figées. Vous pourrez peut-être obtenir un StartPoint et EditPoint , mais vous ne pouvez pas modifier le document ; autrement dit, vous ne pouvez pas définir de propriétés ou modifier le texte situé derrière l’élément de code.

Si InfoLocation retourne vsCMInfoLocationNone , tout ce qui est disponible est un objet de modèle de code qui a un nom. En outre, en fonction du contexte du code source, vous pouvez, dans certains cas, savoir si le nom doit être une classe ou une interface. Dans ce cas, toutefois, étant donné que le modèle de code n’a pas pu résoudre le nom en informations utiles, l’objet est sinon inutile.

Notes

Les valeurs d'éléments de modèle de code, tels que des classes, des structures, des fonctions, des attributs, des délégués, etc., peuvent être non déterministes après certains types de modifications, ce qui signifie qu'il n'est pas certain que leurs valeurs resteront inchangées. Pour plus d’informations, consultez la section les valeurs d’élément de modèle de code peuvent changer dans la découverte de code à l’aide du modèle de code (Visual Basic).

S’applique à