형식 전달(C++/CLI)Type Forwarding (C++/CLI)

‘형식 전달’을 사용하면 한 어셈블리(어셈블리 A)의 형식을 다른 어셈블리(어셈블리 B)로 이동할 수 있으며, 어셈블리 A를 사용하는 클라이언트를 다시 컴파일하지 않아도 됩니다.Type forwarding allows you to move a type from one assembly (assembly A) into another assembly (assembly B), such that, it is not necessary to recompile clients that consume assembly A.

Windows 런타임Windows Runtime

Windows 런타임에서는 이 기능이 지원되지 않습니다.This feature is not supported in the Windows Runtime.

공용 언어 런타임Common Language Runtime

다음 코드 예제에서는 형식 전달을 사용하는 방법을 보여 줍니다.The following code example demonstrates how to use type forwarding.

구문Syntax

#using "new.dll"
[assembly:TypeForwardedTo(type::typeid)];

매개 변수Parameters

신규new
형식 정의를 이동하는 대상 어셈블리입니다.The assembly into which you are moving the type definition.

typetype
정의를 다른 어셈블리로 이동하는 형식입니다.The type whose definition you are moving into another assembly.

설명Remarks

구성 요소(어셈블리)가 제공되고 클라이언트 애플리케이션에서 사용된 후에 형식 전달을 사용하여 구성 요소(어셈블리)의 형식을 다른 어셈블리로 이동하고 업데이트된 구성 요소(및 필요한 추가 어셈블리)를 제공할 수 있으며, 다시 컴파일하지 않고도 클라이언트 애플리케이션이 계속 실행됩니다.After a component (assembly) ships and is being used by client applications, you can use type forwarding to move a type from the component (assembly) into another assembly, ship the updated component (and any additional assemblies required), and the client applications will still work without being recompiled.

형식 전달은 기존 애플리케이션에서 참조된 구성 요소에 대해서만 실행됩니다.Type forwarding only works for components referenced by existing applications. 애플리케이션을 다시 빌드하는 경우 애플리케이션에서 사용된 형식에 적합한 어셈블리 참조가 있어야 합니다.When you rebuild an application, there must be the appropriate assembly references for any types used in the application.

어셈블리에서 형식(형식 A)을 전달하는 경우 해당 형식의 TypeForwardedTo 특성과 어셈블리 참조를 추가해야 합니다.When forwarding a type (Type A) from an assembly, you must add the TypeForwardedTo attribute for that type, as well as an assembly reference. 참조하는 어셈블리에 다음 중 하나가 있어야 합니다.The assembly that you reference must contain one of the following:

  • 형식 A에 대한 정의The definition for Type A.

  • 형식 A의 TypeForwardedTo 특성 및 어셈블리 참조A TypeForwardedTo attribute for Type A, as well as an assembly reference.

전달할 수 있는 형식의 예는 다음과 같습니다.Examples of types that can be forwarded include:

  • ref 클래스ref classes

  • 값 클래스value classes

  • 열거형enums

  • 인터페이스interfaces

다음 형식은 전달할 수 없습니다.You cannot forward the following types:

  • 제네릭 형식Generic types

  • 네이티브 형식Native types

  • 중첩 형식(중첩 형식을 전달하려는 경우 바깥쪽 형식을 전달해야 함)Nested types (if you want to forward a nested type, you should forward the enclosing type)

공용 언어 런타임을 대상으로 하는 언어로 작성된 어셈블리에 형식을 전달할 수 있습니다.You can forward a type to an assembly authored in any language targeting the common language runtime.

따라서 어셈블리 A.dll을 빌드하는 데 사용되는 소스 코드 파일에 형식 정의(ref class MyClass)가 있고 해당 형식 정의를 어셈블리 B.dll로 이동하려는 경우 다음을 수행합니다.So, if a source code file that is used to build assembly A.dll contains a type definition (ref class MyClass), and you wanted to move that type definition to assembly B.dll, you would:

  1. B.dll을 빌드하는 데 사용되는 소스 코드 파일로 MyClass 형식 정의를 이동합니다.Move the MyClass type definition to a source code file used to build B.dll.

  2. 어셈블리 B.dll 빌드Build assembly B.dll

  3. A.dll을 빌드하는 데 사용되는 소스 코드에서 MyClass 형식 정의를 삭제하고 다음으로 바꿉니다.Delete the MyClass type definition from the source code used to build A.dll, and replace it with the following:

    #using "B.dll"
    [assembly:TypeForwardedTo(MyClass::typeid)];
    
  4. 어셈블리 A.dll을 빌드합니다.Build assembly A.dll.

  5. 클라이언트 애플리케이션을 다시 컴파일하지 않고 A.dll을 사용합니다.Use A.dll without recompiling client applications.

요구 사항Requirements

컴파일러 옵션: /clrCompiler option: /clr