CodeAttribute2.InfoLocation-Eigenschaft
Ruft das Codemodell ab.
Namespace: EnvDTE80
Assembly: EnvDTE80 (in EnvDTE80.dll)
Syntax
'Declaration
ReadOnly Property InfoLocation As vsCMInfoLocation
vsCMInfoLocation InfoLocation { get; }
property vsCMInfoLocation InfoLocation {
vsCMInfoLocation get ();
}
abstract InfoLocation : vsCMInfoLocation with get
function get InfoLocation () : vsCMInfoLocation
Eigenschaftswert
Typ: vsCMInfoLocation
Ein vsCMInfoLocation-Konstantenwert.
Hinweise
Wenn die InfoLocation-Eigenschaft den Wert vsCMInfoLocationProject zurückgibt, können Sie Eigenschaften festlegen, einen StartPoint und einen EndPoint abrufen usw. Wenn Sie von einem Codemodellobjekt (A) zu einem anderen (B) wechseln, z. B. von einer Funktion zu deren Typ oder von einer Klasse zu deren Basisklasse, kann B vom Typ vsCMInfoLocationExternal sein, wenn sich die zugehörige Definition in einem anderen Projekt befindet. Die Disposition hängt von der Implementierung des Codemodells ab, sowie davon, ob das Projekt von Objekt B in derselben Sprache implementiert ist wie das von Objekt A usw.
Wenn die InfoLocation-Eigenschaft den Wert vsCMInfoLocationExternal zurückgibt, sind Informationen nur aus Metadaten, einer DLL oder eingefrorenen Quellen verfügbar. Sie können möglicherweise einen StartPoint und einen EditPoint abrufen, Sie können das Dokument jedoch nicht bearbeiten. Mit anderen Worten, Sie können keine Eigenschaften festlegen oder den Text hinter dem Codeelement ändern.
Wenn InfoLocation den Wert vsCMInfoLocationNone zurückgibt, ist lediglich ein Codemodellobjekt mit einem Namen verfügbar. Je nach Kontext des Quellcodes können Sie in einigen Fällen erkennen, ob es sich bei dem Namen um eine Klasse oder eine Schnittstelle handelt. In diesem Fall ist das Objekt jedoch anderweitig nicht verwendbar, da das Codemodell den Namen nicht in nützliche Informationen auflösen konnte.
Hinweis
Die Werte von Codemodellelementen wie Klassen, Strukturen, Funktionen, Attributen, Delegaten usw. können nach bestimmten Bearbeitungsvorgängen nicht deterministisch sein, d. h., dass nicht mehr davon ausgegangen werden kann, dass ihre Werte immer unverändert bleiben.Weitere Informationen finden Sie im Abschnitt zum Änderungsverhalten von Codemodellelementwerten unter Ermitteln von Code über das Codemodell (Visual Basic).
Beispiele
Im folgenden Beispiel werden in der aktuellen Klasse ein neuer Namespace und ein neues Attribut erstellt und einige der Attributeigenschaften aufgelistet.
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;
}
.NET Framework-Sicherheit
- Volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieser Member kann von nur teilweise vertrauenswürdigem Code nicht verwendet werden. Weitere Informationen finden Sie unter Verwenden von Bibliotheken aus teilweise vertrauenswürdigem Code.
Siehe auch
Referenz
Weitere Ressourcen
Gewusst wie: Kompilieren und Ausführen der Codebeispiele für das Automatisierungsobjektmodell