CodeAttribute2.Collection Propriedade

Definição

Obtém uma coleção de objetos CodeAttribute2 .

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

Valor da propriedade

CodeElements

Uma coleção de objetos CodeAttribute2 .

Implementações

Atributos

Exemplos

O exemplo a seguir cria um novo namespace e atributo na classe atual e lista algumas das propriedades do atributo.

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;  
}  

Comentários

Observação

Os valores de argumento de atributo de código, depois de serem atribuídos, não são mantidos na memória por Visual Studio e, portanto, podem ou não ser válidos quando ocorre uma atualização futura do argumento de atributo de código. Ou seja, um acesso de argumento subsequente pode retornar E_FAIL ou um valor totalmente diferente. (No entanto, qualquer coisa que afete os filhos do elemento não tem esse problema.)

Devido a esse comportamento não determinístico, você deve recuperar o valor do argumento antes de alterá-lo. Por exemplo, se você definir um argumento de atributo de código em seu código, como myAttrArg.Value = """a first value""" , você deve referenciá-lo explicitamente antes de atualizá-lo, como myAttrArg = myAttr.Arguments.Item("first value") e, em seguida, atribuir o novo valor, myAttrArg.Value = """a second value""" . Isso garante que o argumento correto seja alterado.

Além disso, os valores de elementos de modelo de código como classes, structs, funções, atributos, delegados e assim por diante podem ser não determinísticos depois de fazer certos tipos de edição, o que significa que seus valores não podem ser dependentes para sempre permanecem os mesmos. Para obter mais informações, consulte os valores de elemento de modelo de código de seção podem ser alterados na descoberta de código usando o modelo de código (Visual Basic).

Aplica-se a