CodeModel.AddFunction 메서드

새 함수 코드 구문을 만든 다음 올바른 위치에 코드를 삽입합니다.

네임스페이스:  EnvDTE
어셈블리:  EnvDTE(EnvDTE.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은 실패합니다.

  • Type
    형식: Object

    필수입니다. 함수가 반환하는 데이터 형식을 나타내는 vsCMTypeRef 상수입니다. 이 값은 CodeTypeRef 개체, vsCMTypeRef 상수 또는 정규화된 형식 이름이 될 수 있습니다.

  • Position
    형식: Object

    선택 사항 기본값은 0입니다. 이 코드 요소 뒤에 새 요소가 추가됩니다. 값이 CodeElement이면 바로 뒤에 새 요소가 추가됩니다.

    값이 Long 데이터 형식이면 AddFunction에서는 요소를 설정하여 이 요소 뒤에 새 요소를 추가합니다.

    컬렉션에서는 1부터 카운트를 시작하므로 0을 설정하면 새 요소가 컬렉션의 맨 처음에 놓이며, 값 -1을 설정하면 요소가 맨 끝에 놓입니다.

반환 값

형식: EnvDTE.CodeFunction
CodeFunction 개체

설명

다음 코드에서는 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

이 경우에는 AddFunction을 호출할 때 오버로드 연산자 자체가 아니라 오버로드할 함수의 이름(여기서는 "someFunction")을 명시적으로 지정해야 합니다.

예를 들어 위의 코드를 실행하면 cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator,...)이 올바로 동작하지 않습니다. 대신 cc.AddFunction("someFunction +", vsCMFunction.vsCMFunctionFunction,...)을 사용해야 합니다.

C#, Visual Basic 및 J#에서는 최상위 함수를 허용하지 않으므로 Visual C++에서만 AddFunction을 구현합니다.

네이티브 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 보안

참고 항목

참조

CodeModel 인터페이스

EnvDTE 네임스페이스

기타 리소스

방법: 자동화 개체 모델 코드의 예제 컴파일 및 실행

코드 모델을 사용하여 코드 검색(Visual Basic)

코드 모델을 사용하여 코드 검색(Visual C#)