Proprietà CodeClass2.InfoLocation
Ottiene le funzionalità del modello di codice.
Spazio dei nomi: EnvDTE80
Assembly: EnvDTE80 (in EnvDTE80.dll)
Sintassi
'Dichiarazione
ReadOnly Property InfoLocation As vsCMInfoLocation
vsCMInfoLocation InfoLocation { get; }
property vsCMInfoLocation InfoLocation {
vsCMInfoLocation get ();
}
abstract InfoLocation : vsCMInfoLocation
function get InfoLocation () : vsCMInfoLocation
Valore proprietà
Tipo: EnvDTE.vsCMInfoLocation
In vsCMInfoLocation valore costante.
Note
se InfoLocation la proprietà restituisce vsCMInfoLocationProject, quindi è possibile impostare le proprietà, si ottiene un oggetto StartPoint, per ottenere EndPoint, e così via.Quando accedere da un oggetto del modello di codice () a un altro (B) - come da una funzione al tipo o da una classe alla classe base (B può essere di tipo vsCMInfoLocationExternal se la definizione è in un altro progetto.La disposizione dipende dall'implementazione del modello di codice, se il progetto dell'oggetto b viene implementato nello stesso linguaggio dell'oggetto, e così via.
se InfoLocation restituisce vsCMInfoLocationExternal, quindi le informazioni sono disponibili solo dai metadati, il controllo da una DLL, o dalle origini bloccati.È possibile ottenere un oggetto StartPoint e EditPoint, ma non è possibile modificare il documento; non è quindi possibile impostare le proprietà o modificare il testo dell'elemento di codice.
se InfoLocation restituisce vsCMInfoLocationNone, quindi tutto ciò che è disponibile è un oggetto del modello di codice che ha un nome.Inoltre, in base al contesto del codice sorgente, è possibile stabilire in alcuni casi se il nome deve essere una classe o un'interfaccia.In questa situazione, tuttavia, poiché il modello di codice non è possibile risolvere il nome ad alcune informazioni utili, l'oggetto è altrimenti non necessario.
[!NOTA]
I valori degli elementi del modello di codice come classi, strutture, le funzioni, gli attributi, delegati, e così via possono non essere deterministici dopo l'inserimento di determinati tipi di modifiche, pertanto i relativi valori non possono essere basati su per rimanere sempre gli stessi.Per ulteriori informazioni, vedere i valori degli elementi del modello di codice della sezione può cambiare in Individuazione di codice mediante il modello di codice (Visual Basic).
Esempi
[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;
}
Sicurezza di .NET Framework
- Attendibilità totale per il chiamante immediato. Impossibile utilizzare questo membro in codice parzialmente attendibile. Per ulteriori informazioni, vedere Utilizzo di librerie da codice parzialmente attendibile.
Vedere anche
Riferimenti
Altre risorse
Procedura: compilare ed eseguire gli esempi di codice del modello a oggetti di automazione
Individuazione di codice mediante il modello di codice (Visual Basic)
Individuazione di codice mediante il modello di codice (Visual C#)