CodeModel.AddFunction 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
创建新的函数代码构造,并将代码插入正确的位置。
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 对象。
- 属性
示例
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) "。