Metodo CodeAttribute2.AddArgument

Aggiunge un argomento all'attributo.

Spazio dei nomi:  EnvDTE80
Assembly:  EnvDTE80 (in EnvDTE80.dll)

Sintassi

'Dichiarazione
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

Parametri

  • Value
    Tipo: System.String
    obbligatorio.Il valore predefinito è elemento 0.The dopo il quale deve essere aggiunto il nuovo elemento.Se il valore corrisponde a CodeElement, quindi il nuovo elemento viene aggiunto all'argomento, CodeElement.Se il valore corrisponde a Long tipo di dati, indica quindi l'elemento dopo il quale deve essere aggiunto il nuovo.Poiché le raccolte sono in base uno, passare a zero indica che il nuovo elemento deve essere inserito all'inizio della raccolta.Il valore -1 indica inserire l'argomento alla fine.
  • Name
    Tipo: System.Object
    obbligatorio.Il valore dell'argomento.
  • Position
    Tipo: System.Object
    facoltativo.Se l'argomento è un parametro denominato, questo parametro contiene il nome dell'argomento.

Valore restituito

Tipo: EnvDTE80.CodeAttributeArgument
In CodeAttributeArgument oggetto.

Note

[!NOTA]

I valori degli argomenti dell'attributo del codice, dopo essere stato assegnato, non vengono mantenuti in memoria da Visual Studiopertanto, può essere valido quando un aggiornamento futuro l'argomento dell'attributo del codice verifica.Ovvero un accesso successivo dell'argomento può restituire E_FAIL o un valore completamente diverso.(Qualcosa che incida sugli elementi figlio dell'elemento, tuttavia, non ha questo problema.)

A causa di tale comportamento non deterministico, è necessario recuperare il valore dell'argomento prima di modificarlo.Ad esempio, se si imposta un argomento dell'attributo del codice nel codice, ad esempio myAttrArg.Value = """a first value"""quindi, è opportuno definire in modo esplicito farvi riferimento prima di aggiornamento, ad esempio myAttrArg = myAttr.Arguments.Item("first value")quindi assegnare il nuovo valore, myAttrArg.Value = """a second value""".Utilizzando questo assicura che l'argomento corretto viene modificato.

Inoltre, i valori degli elementi del modello di codice come classi, strutture, le funzioni, gli attributi, delegati, e così via possono non essere deterministici dopo l'inserimento di determinati tipi di modifiche, pertanto i relativi valori non possono essere basati su per rimanere sempre gli stessi.Per ulteriori informazioni, vedere i valori degli elementi del modello di codice della sezione può cambiare in Individuazione di codice mediante il modello di codice (Visual Basic).

Esempi

Nell'esempio seguente viene creato un nuovo spazio dei nomi e l'attributo nella classe corrente e vengono elencate alcune delle proprietà dell'attributo.

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

Sicurezza di .NET Framework

Vedere anche

Riferimenti

CodeAttribute2 Interfaccia

Spazio dei nomi EnvDTE80

Altre risorse

Procedura: compilare ed eseguire gli esempi di codice del modello a oggetti di automazione

Individuazione di codice mediante il modello di codice (Visual Basic)

Individuazione di codice mediante il modello di codice (Visual C#)