CodeModel2.AddFunction 메서드 (String, Object, vsCMFunction, Object, Object, vsCMAccess)
새 함수 코드 구문을 만든 다음 올바른 위치에 코드를 삽입합니다.
네임스페이스: 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
형식: System.String
필수적 요소로서,새 함수의 이름입니다.
- Location
형식: System.Object
필수적 요소로서,새 함수 정의의 경로 및 파일 이름입니다.언어에 따라 파일 이름은 프로젝트 파일에 대해 상대적이거나 절대적입니다.해당 파일이 아직 프로젝트 항목이 아니면 프로젝트에 추가됩니다.파일을 만들어 프로젝트에 추가할 수 없으면 AddFunction은 실패합니다.
- Kind
형식: EnvDTE.vsCMFunction
필수적 요소로서,property get, 메서드 등과 같은 함수의 형식을 나타내는 vsCMFunction 상수입니다.
- Type
형식: System.Object
필수적 요소로서,함수가 반환하는 데이터 형식을 나타내는 vsCMTypeRef 상수입니다.이 값은 CodeTypeRef 개체, vsCMTypeRef 상수 또는 정규화된 형식 이름이 될 수 있습니다.
- Position
형식: System.Object
선택적 요소로서,기본값은 0입니다.이 코드 요소 뒤에 새 요소가 추가됩니다.값이 CodeElement이면 바로 뒤에 새 요소가 추가됩니다.
값이 Long 데이터 형식이면 AddFunction에서는 요소를 설정하여 이 요소 뒤에 새 요소를 추가합니다.
컬렉션에서는 1부터 카운트를 시작하므로 0을 설정하면 새 요소가 컬렉션의 맨 처음에 놓이며,값 -1을 설정하면 요소가 맨 끝에 놓입니다.
- Access
형식: EnvDTE.vsCMAccess
선택적 요소로서,vsCMAccess 상수입니다.
반환 값
형식: EnvDTE.CodeFunction
CodeFunction 개체입니다.
구현
CodeModel.AddFunction(String, Object, vsCMFunction, Object, Object, vsCMAccess)
설명
다음 예제에서와 같이 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 보안
- 직접 실행 호출자의 경우 완전히 신뢰합니다. 이 멤버는 부분적으로 신뢰할 수 있는 코드에서 사용할 수 없습니다. 자세한 내용은 부분 신뢰 코드에서 라이브러리 사용을 참조하십시오.