CodeAttribute2.Collection, propriété
Obtient une collection d'objets CodeAttribute2.
Espace de noms : EnvDTE80
Assembly : EnvDTE80 (dans EnvDTE80.dll)
Syntaxe
'Déclaration
ReadOnly Property Collection As CodeElements
CodeElements Collection { get; }
property CodeElements^ Collection {
CodeElements^ get ();
}
abstract Collection : CodeElements
function get Collection () : CodeElements
Valeur de propriété
Type : EnvDTE.CodeElements
Collection d'objets CodeAttribute2.
Notes
[!REMARQUE]
Une fois assignées, les valeurs d'arguments d'attributs de code ne sont pas conservées en mémoire par Visual Studio, et peuvent donc être valides ou non lors d'une future mise à jour de l'argument d'attribut de code.Cela signifie qu'un accès ultérieur à un argument peut retourner E_FAIL ou une valeur totalement différente.(Cependant, tout ce qui affecte les enfants de l'élément ne présente pas ce problème.)
Étant donné ce comportement non déterminable, vous devez récupérer la valeur de l'argument avant de la modifier.Par exemple, si vous définissez un argument d'attribut de code, tel que myAttrArg.Value = """a first value""", vous devez le référencer explicitement avant de le mettre à jour (myAttrArg = myAttr.Arguments.Item("first value")), puis assigner la nouvelle valeur (myAttrArg.Value = """a second value""").Cette opération garantit que l'argument correct est modifié.
En outre, les valeurs d'éléments de modèle de code, tels que des classes, des structures, des fonctions, des attributs, des délégués, etc., peuvent être non déterminables après certains types de modifications, ce qui signifie qu'il n'est pas certain que leurs valeurs resteront inchangées.Pour plus d'informations, consultez la section Les valeurs d'élément de modèle de code peuvent être modifiées de la rubrique Découverte de code à l'aide du modèle de code (Visual Basic).
Exemples
L'exemple suivant crée un espace de noms et un attribut dans la classe actuelle, et répertorie certaines des propriétés de l'attribut.
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;
}
Sécurité .NET Framework
- Confiance totale accordée à l'appelant immédiat. Ce membre ne peut pas être utilisé par du code d'un niveau de confiance partiel. Pour plus d'informations, consultez Utilisation de bibliothèques à partir de code d'un niveau de confiance partiel.
Voir aussi
Référence
Autres ressources
Comment : compiler et exécuter les exemples de code du modèle objet Automation
Découverte de code à l'aide du modèle de code (Visual Basic)