Compartilhar via


Método CodeAttribute2.AddArgument

Adiciona um argumento para o atributo.

Namespace:  EnvDTE80
Assembly:  EnvDTE80 (em EnvDTE80.dll)

Sintaxe

'Declaração
Function AddArgument ( _
    Value As String, _
    Name As Object, _
    Position As Object _
) As CodeAttributeArgument
CodeAttributeArgument AddArgument(
    string Value,
    Object Name,
    Object Position
)
CodeAttributeArgument^ AddArgument(
    String^ Value, 
    [InAttribute] Object^ Name, 
    [InAttribute] Object^ Position
)
abstract AddArgument : 
        Value:string * 
        Name:Object * 
        Position:Object -> CodeAttributeArgument
function AddArgument(
    Value : String, 
    Name : Object, 
    Position : Object
) : CodeAttributeArgument

Parâmetros

  • Value
    Tipo: String

    Necessário. O valor padrão é o elemento 0.The depois do qual adicionar o novo elemento. Se o valor for CodeElement, o novo elemento foi adicionado depois do argumento, CodeElement. Se o valor for um tipo de dados de Long , então indica o elemento depois do qual adicionar o novo. Como as coleções são baseado em um, transmita nulo indica que o novo elemento deve ser colocado no topo da coleção. Um valor de -1 significa colocar o argumento na extremidade.

  • Name
    Tipo: Object

    Necessário. O valor do argumento.

  • Position
    Tipo: Object

    Opcional. Se o argumento for um parâmetro nomeado, esse parâmetro contém o nome do argumento.

Valor de retorno

Tipo: EnvDTE80.CodeAttributeArgument
Um objeto CodeAttributeArgument.

Comentários

Dica

Codificar valores de argumento de atributo, depois de ser atribuído, não são mantidos na memória por Visual Studioe, portanto, pode ou não ser válida quando uma atualização futura do argumento do atributo de código ocorre.Isto é, um acesso subsequente do argumento pode retornar E_FAIL ou um valor completamente diferente. (Qualquer coisa que afeta os filhos do elemento, porém, não tem este problema.)

Devido a esse comportamento não determinístico, você deve recuperar o valor do argumento antes de alterar isto.Por exemplo, se você definir um argumento de atributo de código no seu código, como myAttrArg.Value = """a first value""", ao referenciar explicitamente antes de atualizar, como myAttrArg = myAttr.Arguments.Item("first value"), atributos e o novo valor, myAttrArg.Value = """a second value""".Isso assegurará que o argumento correto foi alterado.

Além disso, os valores de código de modelagem elementos como classes, estruturas, funções, atributos, representantes, e assim por diante podem ser não determinísticas depois de fazer determinados tipos as edições do, o que significa que seus valores não podem ser confiáveis em para permanecer sempre os mesmos.Para obter mais informações, veja que os valores do elemento do modelo de código da seção podem ser alteradas em Descobrindo código usando o modelo de código (Visual Basic).

Exemplos

O exemplo a seguir cria uma nova 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 += "# of Arguments: " + cmAttribute.Arguments.Count 
                + Environment.NewLine;
                MessageBox.Show(msg);
                cmAttribute.AddArgument("NewAddedValue", null, null);
                msg += "# of Arguments: " + cmAttribute.Arguments.Count 
                + 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;
}

Segurança do .NET Framework

Consulte também

Referência

CodeAttribute2 Interface

Namespace EnvDTE80

Outros recursos

Como compilar e executar os exemplos de código do modelo de objeto Automation

Descobrindo código usando o modelo de código (Visual Basic)

Descobrindo código usando o modelo de código (Visual C#)