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: System.String
    Obrigatório.Valor padrão é o elemento após o qual você deseja adicionar o novo elemento de 0..Se o valor é um CodeElement, em seguida, o novo elemento é adicionado após o argumento CodeElement.Se o valor é um Long tipo de dados, e em seguida, ele indica o elemento após o qual você deseja adicionar uma nova.Porque as coleções são baseadas em um, passando a zero indica que o novo elemento deve ser colocado no início da coleção.Um valor-1 significa colocar o argumento final.
  • Position
    Tipo: System.Object
    Opcional.Se o argumento é um parâmetro nomeado, este parâmetro contém o nome do argumento.

Valor de retorno

Tipo: EnvDTE80.CodeAttributeArgument
A CodeAttributeArgument objeto.

Comentários

ObservaçãoObservação

Valores de argumento de atributo de código, após serem atribuídas, não são mantidos na memória por Visual Studio, assim, pode ou não ser válida quando ocorre uma futura atualização para o argumento de atributo de código. Ou seja, o acesso de um argumento subseqüente pode retornar E_FAIL ou um valor totalmente diferente. (Qualquer coisa que afete os filhos do elemento, no entanto, não tem esse problema.)

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

Além disso, os valores dos elementos de modelo de código como classes, estruturas, funções, atributos, delegados e assim por diante podem ser não-determinísticos depois de fazer determinados tipos de edições, o que significa que seus valores não confie sempre permanecer o mesmo. Para obter mais informações, consulte a seção valores de elemento de modelo de código podem ser alteradas nas Descobrindo o Código usando o modelo de Código (Visual Basic).

Exemplos

O exemplo a seguir cria um novo namespace e um 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 a automação de exemplos de Código do modelo de objeto

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

Descobrindo o Código usando o modelo de Código (Visual TRANSLATION FROM VPE FOR CSHARP)