CodeModel2.AddFunction 方法
创建新的函数代码构造,并将代码插入正确的位置。
命名空间: EnvDTE80
程序集: EnvDTE80(在 EnvDTE80.dll 中)
语法
声明
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
参数
Name
类型:String必选。 新函数的名称。
Location
类型:Object必选。 新函数定义的路径和文件名。 根据语言的不同,文件名是项目文件的相对名称或绝对名称。 如果该文件还不是项目项,则将该文件添加到项目中。 如果无法创建该文件并将其添加到项目中,则 AddFunction 失败。
Kind
类型:vsCMFunction必选。 用于指示函数类型(例如,函数是 property-get、方法还是其他类型)的 vsCMFunction 常数。
Type
类型:Object必选。 一个 vsCMTypeRef 常数,该常数指示函数返回的数据类型。 它可以是 CodeTypeRef 对象、vsCMTypeRef 常数或完全限定的类型名。
Position
类型:Object可选。 默认值 = 0。 将在其后添加新元素的代码元素。 如果该值为 CodeElement,则紧跟在其后添加新元素。
如果该值为 Long 数据类型,则 AddFunction 指示在哪个元素的后面添加新元素。
因为集合从 1 开始计数,所以传递 0 指示应将新元素放置在集合的开始处。 值为 -1 表示应将元素放在结尾处。
Access
类型:vsCMAccess可选。 一个 vsCMAccess 常数。
返回值
类型:CodeFunction
一个 CodeFunction 对象。
备注
您可以添加重载运算符(使用 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
在本例中,您必须显式指定对 AddFunction 调用中要重载的函数的名称(本例中为“someFunction”),而不仅仅是指定重载运算符本身。 以上面的代码作为示例,
cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator,...)
不起作用。 必须改用
cc.AddFunction("someFunction +", vsCMFunction.vsCMFunctionFunction,...)
仅 Visual C++ 实现此方法,因为 C#、Visual Basic 和 J# 不允许使用顶级函数。
本机 Visual C++ 要求其完全限定的类型名使用以冒号分隔 (::) 的格式。
备注
在进行某些类型的编辑之后,代码模型元素(如类、结构、函数、特性、委托等)的值可能是非确定性的,这意味着不能指望它们的值总是保持不变。有关更多信息,请参见 使用代码模型查找代码 (Visual Basic) 中的“代码模型元素的值可能会更改”一节。
示例
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);
}
}
.NET Framework 安全性
- 对直接调用方的完全信任。此成员不能由部分信任的代码使用。有关详细信息,请参阅通过部分受信任的代码使用库。