Compartir a través de


CodeAttribute2.AddArgument (Método)

Agrega un argumento al atributo.

Espacio de nombres:  EnvDTE80
Ensamblado:  EnvDTE80 (en EnvDTE80.dll)

Sintaxis

'Declaración
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
    Obligatorio.El valor predeterminado es 0. Elemento tras el que se agrega el elemento nuevo.Si el valor es un CodeElement, el nuevo elemento se agregará inmediatamente detrás del argumento, CodeElement.Si el tipo de datos del valor es Long, indicará el elemento detrás del cual se ha de agregar el nuevo.Como las colecciones están basadas en uno, pasar un valor de cero indica que el nuevo elemento deberá colocarse al principio de la colección.Un valor de -1 significa que el argumento se colocará al final.
  • Position
    Tipo: System.Object
    Opcional.Si el argumento es un parámetro con nombre, este parámetro contiene el nombre del argumento.

Valor devuelto

Tipo: EnvDTE80.CodeAttributeArgument
Un objeto CodeAttributeArgument.

Comentarios

[!NOTA]

Una vez asignados los valores del argumento del atributo de código, Visual Studio no los conserva en memoria y, por ello, pueden ser o no ser válidos si se produce una actualización del argumento del atributo de código.Es decir, un acceso subsiguiente al argumento podría devolver E_FAIL o un valor totalmente distinto.(Sin embargo, todo lo que afecte a los elementos secundarios del elemento no tiene este problema).

Debido a este comportamiento no determinista, se debería recuperar el valor del argumento antes de cambiarlo.Por ejemplo, si establece un argumento de atributo de código en el código, como myAttrArg.Value = """a first value""", debería hacer referencia a él explícitamente antes de actualizarlo, por ejemplo myAttrArg = myAttr.Arguments.Item("first value") y, a continuación, asignar el nuevo valor, myAttrArg.Value = """a second value""".Esto garantiza que se cambie el argumento correcto.

Además, los valores de los elementos de modelo de código como clases, structs, funciones, atributos, delegados, etc., pueden ser no deterministas una vez realizados determinados tipos de modificaciones; esto significa que no se puede confiar en que sus valores se mantengan siempre igual.Para obtener más información, vea la sección Los valores de elementos de modelo de código pueden cambiar, en Detectar código utilizando el modelo de código (Visual Basic).

Ejemplos

El siguiente ejemplo crea un nuevo espacio de nombres y atributo en la clase actual y muestra algunas de las propiedades del 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;
}

Seguridad de .NET Framework

Vea también

Referencia

CodeAttribute2 Interfaz

EnvDTE80 (Espacio de nombres)

Otros recursos

Cómo: Compilar y ejecutar los ejemplos de código del modelo de objetos de automatización

Detectar código utilizando el modelo de código (Visual Basic)

Detectar código utilizando el modelo de código (Visual C#)