CodeModel.AddFunction 方法

定义

创建新的函数代码构造,并将代码插入正确的位置。

EnvDTE::CodeFunction AddFunction(std::wstring const & Name, winrt::Windows::Foundation::IInspectable const & Location, EnvDTE::vsCMFunction Kind, winrt::Windows::Foundation::IInspectable const & Type, winrt::Windows::Foundation::IInspectable const & Position, EnvDTE::vsCMAccess Access = EnvDTE.vsCMAccess.vsCMAccessDefault);
[System.Runtime.InteropServices.DispId(9)]
public EnvDTE.CodeFunction AddFunction (string Name, object Location, EnvDTE.vsCMFunction Kind, object Type, object Position, EnvDTE.vsCMAccess Access = EnvDTE.vsCMAccess.vsCMAccessDefault);
[<System.Runtime.InteropServices.DispId(9)>]
abstract member AddFunction : string * obj * EnvDTE.vsCMFunction * obj * obj * EnvDTE.vsCMAccess -> EnvDTE.CodeFunction
Public Function AddFunction (Name As String, Location As Object, Kind As vsCMFunction, Type As Object, Optional Position As Object, Optional Access As vsCMAccess = EnvDTE.vsCMAccess.vsCMAccessDefault) As CodeFunction

参数

Name
String

必需。 新函数的名称。

Location
Object

必需。 新函数定义的路径和文件名。 文件名对项目文件是相对的还是绝对的取决于所使用的语言。 如果文件还不是项目项,则将被添加到项目中。 如果无法创建文件并将其添加到项目,则将 AddFunction(String, Object, vsCMFunction, Object, Object, vsCMAccess) 失败。

Kind
vsCMFunction

必需。 vsCMFunction指示函数类型的常数,例如函数是属性获取还是方法。

Type
Object

必需。 一个表示函数返回的数据类型的 vsCMTypeRef 常数。 它可以是 CodeTypeRef 对象、vsCMTypeRef 常数或完全限定类型名称。

Position
Object

可选。 默认值 = 0。 将在其后添加新元素的代码元素。 如果该值为 CodeElement,则紧跟在其后添加新元素。

如果该值为 Long 数据类型,则 AddFunction(String, Object, vsCMFunction, Object, Object, vsCMAccess) 指示要在哪个元素后添加新元素。

因为集合从 1 开始计数,所以传递 0 指示应将新元素放置在集合的开始处。 值-1 表示应将元素置于结尾。

Access
vsCMAccess

可选。 一个 vsCMAccess 常数。

返回

CodeFunction

CodeFunction 对象。

属性

示例

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);  
    }  
}  

注解

下面的代码使用. vsCMFunctionOperator 添加重载运算符 vsCMFunction

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

在这种情况下,你必须显式指定要重载的函数的名称, (在这种情况下,在调用中 ) "someFunction" AddFunction ,而不仅仅是重载运算符本身。

使用上述代码作为示例,不 cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator,...) 起作用。 您必须改用 cc.AddFunction("someFunction +", vsCMFunction.vsCMFunctionFunction,...)

只有 Visual C++ 实现 AddFunction ,因为 c #、Visual Basic 和 j # 不允许顶级函数。

本机本机 Visual C++ 要求其完全限定的类型名称具有以冒号分隔的 (:: ) 格式。

备注

在进行了某些类型的编辑之后,代码模型元素(例如类、结构、函数、特性、委托等)的值可能变为非确定性的,这意味着不能确定它们的值始终保持不变。 有关详细信息,请参阅 "代码模型元素值在 使用代码模型查找代码时 可能发生变化" (Visual Basic) "。

适用于