CodeAttribute2.InfoLocation – vlastnost
Načtení 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 StartPointa 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í vlastnost vsCMInfoLocationExternal, pak informace jsou k dispozici pouze z metadat v knihovně DLL nebo zdroje zmrazené. Je možné získat StartPoint a EditPoint, ale nemůžete upravovat dokument. Jinými slovy nelze 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 žádné skutečné informace objektu 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
Následující příklad vytvoří nový obor názvů a atribut aktuální třídy a jsou uvedeny některé vlastnosti atributu.
public void CreateClassAndAttrib(DTE2 applicationObject)
{
// Before running, load or create a project.
FileCodeModel2 fcm2 = GetFileCodeModel(applicationObject);
CodeAttribute2 cmAttribute;
CodeClass2 cmClass;
String msg = null;
if (fcm2 != null)
{
CodeNamespace cmNamespace;
// Try to create a new namespace.
try
{
cmNamespace = fcm2.AddNamespace("CMNamespace", -1);
// If successful, create the other code elements.
if (cmNamespace != null)
{
cmClass = (CodeClass2)cmNamespace.AddClass("ANewClass",
-1, null, null, vsCMAccess.vsCMAccessPrivate);
cmAttribute = (CodeAttribute2)cmClass.AddAttribute
("NewAttribute", "AttributeValue", -1);
msg += "InfoLocation: " + cmAttribute.InfoLocation +
Environment.NewLine;
msg += "IsCodeType?: " + cmAttribute.IsCodeType +
Environment.NewLine;
msg += "Kind: " + cmAttribute.Kind +
Environment.NewLine;
MessageBox.Show(msg);
}
else
{
MessageBox.Show("Cannot continue - no filecodemodel
available.");
}
}
catch (Exception ex)
{
MessageBox.Show("ERROR: " + ex);
}
}
}
public FileCodeModel2 GetFileCodeModel(DTE2 applicationObject)
{
// Returns the FileCodeModel object of the active
// window.
TextWindow txtWin =
(TextWindow)applicationObject.ActiveWindow.Object;
FileCodeModel2 fcm2;
if (txtWin != null)
{
try
{
fcm2 = (FileCodeModel2)txtWin.Parent.
ProjectItem.FileCodeModel;
return fcm2;
}
catch (Exception ex)
{
MessageBox.Show("ERROR: " + ex);
return null;
}
}
else
return null;
}
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