CodeClass2.InfoLocation – vlastnost
Získá schopnosti modelu kódu.
Obor názvů: EnvDTE80
Sestavení: EnvDTE80 (v EnvDTE80.dll)
Syntaxe
'Deklarace
ReadOnly Property InfoLocation As vsCMInfoLocation
Get
vsCMInfoLocation InfoLocation { get; }
property vsCMInfoLocation InfoLocation {
vsCMInfoLocation get ();
}
abstract InfoLocation : vsCMInfoLocation
function get InfoLocation () : vsCMInfoLocation
Hodnota vlastnosti
Typ: EnvDTE.vsCMInfoLocation
A vsCMInfoLocation konstantní hodnotu.
Implementuje
Poznámky
Pokud InfoLocation vrátí vlastnost vsCMInfoLocationProject, pak můžete nastavit vlastnosti, získat StartPoint, získat EndPointa tak dále. Po přechodu z jednoho kódu modelu objektu (A) do jiného (B) – například z funkce z třídy na základní třídu nebo jeho typ – může být typu b vsCMInfoLocationExternal Pokud je jeho definice v jiném projektu. Odstraňování závisí na implementaci modelu kódu, zda objekt b projektu je implementováno ve stejném jazyce jako objekt a atd.
Pokud InfoLocation vrátí vsCMInfoLocationExternal, pak informace jsou k dispozici pouze z metadat, kontroly knihovnu DLL nebo ze zmrazených zdrojů. Je možné získat StartPoint a EditPoint, ale nemůžete upravovat dokument; Nelze tedy nastavit vlastnosti nebo změnit text za prvek kódu.
Pokud InfoLocation vrátí vsCMInfoLocationNone, potom všechny k dispozici je objekt modelu kódu, která má název. Také na základě kontextu zdrojového kódu, v některých případech můžete zjistit zda má být název třídy nebo rozhraní. V této situaci protože kód modelu nelze přeložit název užitečné informace, objekt je však jinak nepoužitelný.
Poznámka
Deterministický může být po provedení určité typy úprav, což znamená, že jejich hodnoty nelze dovolávat vždy zůstat stejné hodnoty prvků modelu kód jako třídy, struktury, funkce, atributy, delegátů a tak dále. Další informace naleznete v části Změna hodnoty prvku modelu kódu Discovering Code by Using the Code Model (Visual Basic).
Příklady
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;
}
Zabezpečení rozhraní .NET Framework
- Plná důvěra přímému volajícímu. Částečně zabezpečený kód nemůže tento člen použít. Další informace naleznete v tématu Používání knihoven z částečně důvěryhodného kódu.
Viz také
Odkaz
Další zdroje
How to: Compile and Run the Automation Object Model Code Examples