CodeAttribute2.Collection Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft eine Auflistung von CodeAttribute2-Objekten ab.
public:
property EnvDTE::CodeElements ^ Collection { EnvDTE::CodeElements ^ get(); };
[System.Runtime.InteropServices.DispId(2)]
public EnvDTE.CodeElements Collection { [System.Runtime.InteropServices.DispId(2)] [System.Runtime.InteropServices.TypeLibFunc(1024)] get; }
[<System.Runtime.InteropServices.DispId(2)>]
[<get: System.Runtime.InteropServices.DispId(2)>]
[<get: System.Runtime.InteropServices.TypeLibFunc(1024)>]
member this.Collection : EnvDTE.CodeElements
Public ReadOnly Property Collection As CodeElements
Eigenschaftswert
Eine Auflistung von CodeAttribute2-Objekten.
Implementiert
- Attribute
Beispiele
Im folgenden Beispiel werden ein neuer Namespace und ein neues Attribut in der aktuellen Klasse erstellt und einige Eigenschaften des Attributs 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 += "Attribute count: " +
cmAttribute.Collection.Count + Environment.NewLine;
msg += "Document name: " +
cmAttribute.DTE.ActiveDocument.Name;
}
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;
}
Hinweise
Hinweis
Code Attribut-Argument Werte werden nach dem zuweisen nicht im Arbeitsspeicher beibehalten Visual Studio und sind daher möglicherweise gültig, wenn ein zukünftiges Update für das Code Attribut-Argument auftritt. Das heißt, dass ein nachfolgende Argument Zugriff E_FAIL oder einen ganz anderen Wert zurückgeben kann. (Alle Elemente, die die untergeordneten Elemente des Elements betreffen, haben jedoch dieses Problem nicht.)
Aufgrund dieses nicht deterministischen Verhaltens sollten Sie den Wert des Arguments vor der Änderung abrufen. Wenn Sie z. b. ein Code Attribut Argument in Ihrem Code festlegen, z. b. myAttrArg.Value = """a first value""" , sollten Sie vor dem Aktualisieren explizit darauf verweisen, z myAttrArg = myAttr.Arguments.Item("first value") . b., und dann den neuen Wert zuweisen myAttrArg.Value = """a second value""" . Dadurch wird sichergestellt, dass das richtige Argument geändert wird.
Außerdem können die Werte von Code Modellelementen, wie z. b. Klassen, Strukturen, Funktionen, Attribute, Delegaten usw., nicht deterministisch sein, nachdem bestimmte Arten von Änderungen vorgenommen wurden. Dies bedeutet, dass ihre Werte nicht immer gleich bleiben. Weitere Informationen finden Sie im Abschnitt Code Modell Element-Werte können sich in ermitteln von Code mithilfe des Code Modells (Visual Basic)ändern.