CodeModel.AddFunction (Método)
Crea una nueva construcción de código de función e inserta el código en la ubicación adecuada.
Espacio de nombres: EnvDTE
Ensamblado: EnvDTE (en EnvDTE.dll)
Sintaxis
'Declaración
Function AddFunction ( _
Name As String, _
Location As Object, _
Kind As vsCMFunction, _
Type As Object, _
Position As Object, _
Access As vsCMAccess _
) As CodeFunction
CodeFunction AddFunction(
string Name,
Object Location,
vsCMFunction Kind,
Object Type,
Object Position,
vsCMAccess Access
)
CodeFunction^ AddFunction(
String^ Name,
Object^ Location,
vsCMFunction Kind,
Object^ Type,
Object^ Position,
vsCMAccess Access
)
abstract AddFunction :
Name:string *
Location:Object *
Kind:vsCMFunction *
Type:Object *
Position:Object *
Access:vsCMAccess -> CodeFunction
function AddFunction(
Name : String,
Location : Object,
Kind : vsCMFunction,
Type : Object,
Position : Object,
Access : vsCMAccess
) : CodeFunction
Parámetros
Name
Tipo: StringObligatorio. Nombre de la nueva función.
Location
Tipo: ObjectObligatorio. Ruta de acceso y nombre de archivo correspondientes a la nueva definición de función. En función del lenguaje, el nombre de archivo será relativo o absoluto con respecto al archivo de proyecto. El archivo se agregará al proyecto si todavía no es un elemento del mismo. Si no es posible crear el archivo y agregarlo al proyecto, AddFunction producirá un error.
Kind
Tipo: EnvDTE.vsCMFunctionObligatorio. La constante vsCMFunction que indica el tipo de función, como property-get o un método.
Type
Tipo: ObjectObligatorio. Constante vsCMTypeRef que indica el tipo de datos que devuelve la función. Puede tratarse de un objeto CodeTypeRef, de una constante vsCMTypeRef o de un nombre de tipo completo.
Position
Tipo: ObjectOpcional. Valor predeterminado = 0. Elemento de código tras el que se agrega el elemento nuevo. Si el valor es un CodeElement, el nuevo elemento se agregará inmediatamente tras él.
Si el tipo de datos del valor es Long, AddFunction indicará el elemento detrás del cual se ha de agregar el nuevo elemento.
Como el recuento de los elementos de una colección comienza a partir de 1, pasar un valor de 0 indica que el nuevo elemento deberá colocarse al principio de la colección. Un valor de -1 indica que el elemento debe situarse al final.
Access
Tipo: EnvDTE.vsCMAccessOpcional. Constante vsCMAccess.
Valor devuelto
Tipo: EnvDTE.CodeFunction
Un objeto CodeFunction.
Comentarios
En el código siguiente se agrega a un operador de sobrecarga utilizando vsCMFunction.vsCMFunctionOperator.
Sub testAddOverloadOperatorCPP()
Dim fcm As FileCodeModel = _
DTE.ActiveDocument.ProjectItem.FileCodeModel
Dim cc As CodeClass = fcm.CodeElements.Item("someClassName")
cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator, _
vsCMTypeRef.vsCMTypeRefInt)
'cc.AddFunction("someFunction +", _
vsCMFunction.vsCMFunctionFunction, vsCMTypeRef.vsCMTypeRefInt)
End Sub
En esta instancia, debe especificar explícitamente el nombre de la función que desea sobrecargar (en este caso, "someFunction") en la llamada a AddFunction, no sólo el operador de sobrecarga propiamente dicho.
Utilizando el código anterior como ejemplo, cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator,...) no funciona. Debe utilizar cc.AddFunction("someFunction +", vsCMFunction.vsCMFunctionFunction,...) en su lugar
Sólo Visual C++ implementa AddFunction, ya que C#, Visual Basic y J# no permiten las funciones de nivel superior.
Visual C++ nativo requiere el formato de separación por signos de dos puntos (::) para sus nombres de tipo completos.
Nota
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
Sub AddFunctionExample(ByVal dte As DTE2)
' Before running this example, open a code document from a project.
Try
Dim projItem As ProjectItem = dte.ActiveDocument.ProjectItem
Dim cm As CodeModel = projItem.ContainingProject.CodeModel
' Create a new function.
cm.AddFunction("TestFunction", projItem.Name, _
vsCMFunction.vsCMFunctionFunction, _
vsCMTypeRef.vsCMTypeRefInt)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
public void AddFunctionExample(DTE2 dte)
{
// Before running this example, open a code document from
// a project.
try
{
ProjectItem projItem = dte.ActiveDocument.ProjectItem;
CodeModel cm = projItem.ContainingProject.CodeModel;
// Create a new function.
cm.AddFunction("TestFunction", projItem.Name, _
vsCMFunction.vsCMFunctionFunction, _
vsCMTypeRef.vsCMTypeRefInt, -1, _
vsCMAccess.vsCMAccessDefault);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
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)