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.
- Name
Tipo: System.Object
Obligatorio.Valor del argumento.
- 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
- Plena confianza para el llamador inmediato. Un código de confianza parcial no puede utilizar este miembro. Para obtener más información, vea Utilizar bibliotecas de código que no es de plena confianza.
Vea también
Referencia
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)