Partager via


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

Voir aussi

Référence

CodeAttribute2 Interface

Collection, surcharge

EnvDTE80, espace de noms

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)

Découverte de code à l'aide du modèle de code (Visual C#)