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
- Pełne zaufanie do bezpośredniego wywołującego. Tego elementu członkowskiego nie można używać w kodzie częściowo zaufanym. Aby uzyskać więcej informacji, zobacz Używanie bibliotek pochodzących z częściowo zaufanego kodu.
Zobacz też
Informacje
Inne zasoby
Porady: kompilowanie i uruchamianie kodu modelu obiektów automatyzacji — przykłady