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.Predefinito = 0. L'elemento dopo il quale deve essere aggiunto il nuovo elemento.Se il valore corrisponde a CodeElement, il nuovo elemento verrà aggiunto immediatamente dopo l'argomento, CodeElement.Se il valore è un tipo di dati Long, indica l'elemento dopo il quale deve essere aggiunto quello nuovo.Poiché gli insiemi sono in base 1, il valore 0 indica che il nuovo elemento deve essere inserito all'inizio dell'insieme.Un valore pari a -1 indica che l'argomento deve essere inserito alla fine.
- Name
Tipo: System.Object
Obbligatorio.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
Un oggetto CodeAttributeArgument.
Note
Nota
Dopo l'assegnazione, i valori dell'argomento dell'attributo di codice non vengono mantenuti in memoria da parte di Visual Studio e pertanto potrebbero non essere validi in un successivo aggiornamento di tale argomento. Ciò significa che il successivo accesso all'argomento può restituire E_FAIL o un valore del tutto diverso. Tutto ciò che riguarda gli elementi figlio dell'elemento non presenta questo problema.
A causa di questo comportamento non deterministico, è necessario recuperare il valore dell'argomento prima di apportarvi delle modifiche. Ad esempio, se nel codice si imposta un argomento dell'attributo di codice, come myAttrArg.Value = """a first value""", è necessario farvi riferimento in modo esplicito prima di procedere con l'aggiornamento, ad esempio myAttrArg = myAttr.Arguments.Item("first value"), e assegnare quindi il nuovo valore, myAttrArg.Value = """a second value""". Questa operazione assicura che venga modificato l'argomento corretto.
Inoltre, i valori degli elementi del modello di codice, quali classi, strutture, funzioni, attributi, delegati e così via, possono non essere deterministici dopo alcuni tipi di modifiche. Ciò significa che non si può fare affidamento sulla stabilità di tali valori. Per ulteriori informazioni, vedere la sezione Possibile modifica dei valori degli elementi del modello di codice in Individuazione di codice mediante il modello di codice (Visual Basic).
Esempi
Nell'esempio riportato di seguito vengono creati uno spazio dei nomi e un attributo nuovi nella classe corrente e vengono elencate alcune 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
- Attendibilità totale per il chiamante immediato. Impossibile utilizzare questo membro in codice parzialmente attendibile. Per ulteriori informazioni, vedere Utilizzo di librerie da codice parzialmente attendibile.
Vedere anche
Riferimenti
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#)