CodeModel.AddFunction – metoda
Vytvoří nové konstrukce kód funkce a kód vloží do správného umístění.
Obor názvů: EnvDTE
Sestavení: EnvDTE (v EnvDTE.dll)
Syntaxe
'Deklarace
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
Parametry
- Name
Typ: System.String
Povinné.Název nové funkce.
- Location
Typ: System.Object
Povinné.Cesta a název pro nové definice funkce.V závislosti na jazyku název souboru je relativní nebo absolutní souboru projektu.Soubor je do projektu přidány, pokud již není položka projektu.Pokud nelze soubor vytvořen a přidán do projektu, pak AddFunction se nezdaří.
- Kind
Typ: EnvDTE.vsCMFunction
Povinné.vsCMFunction Konstanta určující typ funkce, například zda je funkce get vlastnosti nebo metody.
- Type
Typ: System.Object
Povinné.A vsCMTypeRef Konstanta určující typ dat, který vrátí.To může být CodeTypeRef objektu, vsCMTypeRef konstanta nebo zadejte úplný název.
- Position
Typ: System.Object
Nepovinné.Výchozí nastavení = 0.Prvek kódu, po které chcete přidat nový prvek.Pokud je hodnota CodeElement, potom ihned po je přidán nový prvek.
Pokud hodnota je typ dat Long, pak AddFunction určuje prvek, po které chcete přidat nový prvek.
Protože kolekce zahájit jejich počet na 1, procházející 0 udává, že nový prvek by měl na začátku kolekce.Hodnota-1 znamená, že by měl být prvek umístěn na konci.
- Access
Typ: EnvDTE.vsCMAccess
Nepovinné.A vsCMAccess konstantní.
Vrácená hodnota
Typ: EnvDTE.CodeFunction
Objekt CodeFunction.
Poznámky
Následující kód přidává pomocí operátoru přetížení 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
V tomto případě je nutné explicitně zadat název chcete přetížit (v tomto případě "someFunction") ve volání funkce AddFunction, nejen sám provozovatel přetížení.
Pomocí výše uvedeného kódu například, cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator,...) nefunguje.Místo toho použijtecc.AddFunction("someFunction +", vsCMFunction.vsCMFunctionFunction,...)
Implementuje pouze Visual C++ AddFunction, protože C#, Visual Basic a J# zakázat funkce nejvyšší úrovně.
Nativní nativní Visual C++ vyžaduje oddělené dvojtečkou (::) formát pro jeho úplný zadejte jména.
[!POZNÁMKA]
Není deterministický může být po provedení určité typy úprav, což znamená, že jejich hodnoty nelze dovolávat vždy zůstat stejné hodnoty prvků modelu kód jako třídy, struktury, funkce, atributy, delegátů a tak dále.Další informace naleznete v části Změna hodnoty prvku modelu kódu Zjištění kódu pomocí kódu modelu (Visual Basic).
Příklady
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);
}
}
Zabezpečení rozhraní .NET Framework
- Plná důvěra přímému volajícímu. Částečně zabezpečený kód nemůže tento člen použít. Další informace naleznete v tématu Používání knihoven z částečně důvěryhodného kódu.
Viz také
Referenční dokumentace
Další zdroje
Jak: kompilace a spuštění příkladů kódu automatizace objektu modelu