CodeClass2.InfoLocation Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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é
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).