CodeModel2.AddFunction, méthode (String, Object, vsCMFunction, Object, Object, vsCMAccess)
Crée une construction de code de fonction et insère le code à l'emplacement approprié.
Espace de noms : EnvDTE80
Assembly : EnvDTE80 (dans EnvDTE80.dll)
Syntaxe
'Déclaration
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
Paramètres
- Name
Type : System.String
Obligatoire.Nom de la nouvelle fonction.
- Location
Type : System.Object
Obligatoire.Chemin d'accès et nom de fichier de la nouvelle définition de fonction.Selon le langage, le nom de fichier est relatif ou absolu par rapport au fichier projet.Le fichier est ajouté au projet s'il n'est pas déjà un élément de projet.Si vous ne pouvez pas créer et ajouter le fichier au projet, la méthode AddFunction échoue.
- Kind
Type : EnvDTE.vsCMFunction
Obligatoire.Constante vsCMFunction indiquant le type de fonction, par exemple si la fonction est une propriété get, une méthode, etc.
- Type
Type : System.Object
Obligatoire.Constante vsCMTypeRef indiquant le type de données retourné par la fonction.Il peut s'agir d'un objet CodeTypeRef, d'une constante vsCMTypeRef ou d'un nom de type qualifié complet.
- Position
Type : System.Object
Facultatif.Valeur par défaut = 0.Élément de code après lequel le nouvel élément doit être ajouté.Si la valeur est CodeElement, le nouvel élément est ajouté directement après.
Si la valeur est un type de données Long, AddFunction indique l'élément après lequel le nouvel élément doit être ajouté.
Comme la comptabilisation des collections commence à 1, passer la valeur 0 indique que le nouvel élément doit être placé au début de la collection.La valeur -1 signifie que l'élément doit être placé à la fin.
- Access
Type : EnvDTE.vsCMAccess
Facultatif.Constante vsCMAccess.
Valeur de retour
Type : EnvDTE.CodeFunction
Objet CodeFunction.
Notes
Vous pouvez ajouter un opérateur de surcharge (avec vsCMFunctionOperator) comme dans l'exemple suivant.
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
Dans ce cas, vous devez spécifier explicitement le nom de la fonction que vous voulez surcharger (dans cet exemple, « someFunction ») dans l'appel à AddFunction, pas uniquement l'opérateur de surcharge lui-même.L'utilisation du code ci-dessus
cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator,...)
ne fonctionne pas.Vous devez utiliser plutôt
cc.AddFunction("someFunction +", vsCMFunction.vsCMFunctionFunction,...)
Seul Visual C++ implémente cette méthode parce que C#, Visual Basic et J# n'autorisent pas de fonctions de niveau supérieur.
Le code Visual C++ natif nécessite le format séparé par deux-points (::) pour ses noms de types qualifiés complets.
[!REMARQUE]
Les valeurs d'éléments de modèle de code, tels que des classes, des structures, des fonctions, des attributs, des délégués, etc., peuvent être non déterminables après certains types de modifications, ce qui signifie qu'il n'est pas certain que leurs valeurs resteront inchangées.Pour plus d'informations, consultez la section Les valeurs d'élément de modèle de code peuvent être modifiées de la rubrique Découverte de code à l'aide du modèle de code (Visual Basic).
Exemples
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);
}
}
Sécurité .NET Framework
- Confiance totale accordée à l'appelant immédiat. Ce membre ne peut pas être utilisé par du code d'un niveau de confiance partiel. Pour plus d'informations, consultez Utilisation de bibliothèques à partir de code d'un niveau de confiance partiel.
Voir aussi
Référence
Autres ressources
Comment : compiler et exécuter les exemples de code du modèle objet Automation
Découverte de code à l'aide du modèle de code (Visual Basic)