다음을 통해 공유


Interop 특성 적용

네임스페이 System.Runtime.InteropServices 스는 디자인 타임에 사용자가 적용한 특성, 변환 프로세스 중에 COM interop 도구 및 API에 의해 적용된 특성, 사용자 또는 COM interop에서 적용한 특성의 세 가지 범주를 제공합니다.

관리 코드에 특성을 적용하는 작업에 익숙하지 않은 경우 특성을 사용하여 메타데이터 확장을 참조하세요. 다른 사용자 지정 특성과 마찬가지로 형식, 메서드, 속성, 매개 변수, 필드 및 기타 멤버에 interop 관련 특성을 적용할 수 있습니다.

Design-Time 특성

디자인 타임 특성을 사용하여 COM interop 도구 및 API에서 수행하는 변환 프로세스의 결과를 조정할 수 있습니다. 다음 표에서는 관리되는 소스 코드에 적용할 수 있는 특성에 대해 설명합니다. 경우에 따라 COM interop 도구는 이 표에 설명된 특성을 적용할 수도 있습니다.

특성 설명
AutomationProxyAttribute 형식을 Automation 마샬러나 사용자 정의 프록시 및 스텁을 사용하여 마샬링할 것인지를 지정합니다.
ClassInterfaceAttribute 클래스에 대해 생성된 인터페이스의 형식을 제어합니다.
CoClassAttribute 형식 라이브러리에서 가져온 원래 coclass의 CLSID를 식별합니다.

COM interop 도구는 일반적으로 이 특성을 적용합니다.
ComImportAttribute COM 형식 라이브러리에서 coclass 또는 인터페이스 정의를 가져왔음을 나타냅니다. 런타임은 이 플래그를 사용하여 형식을 활성화하고 마샬링하는 방법을 알고 있습니다. 이 특성은 형식을 형식 라이브러리로 다시 내보내는 것을 금지합니다.

COM interop 도구는 일반적으로 이 특성을 적용합니다.
ComRegisterFunctionAttribute 등록 프로세스 중에 사용자가 작성한 코드를 실행할 수 있도록 COM에서 사용하기 위해 어셈블리를 등록할 때 메서드를 호출해야 임을 나타냅니다.
ComSourceInterfacesAttribute 클래스에 대한 이벤트의 원본인 인터페이스를 식별합니다.

COM interop 도구는 이 특성을 적용할 수 있습니다.
ComUnregisterFunctionAttribute 프로세스 중에 사용자가 작성한 코드를 실행할 수 있도록 어셈블리가 COM에서 등록 취소될 때 메서드를 호출해야 임을 나타냅니다.
ComVisibleAttribute 특성 값이 false이면 COM에 표시되지 않는 형식을 렌더링합니다. 이 특성은 개별 형식 또는 전체 어셈블리에 적용하여 COM 표시 여부를 제어할 수 있습니다. 기본적으로 관리되는 모든 공용 형식이 표시됩니다. 특성을 표시할 필요가 없습니다.
DispIdAttribute 메서드 또는 필드의 COM DISPID(디스패치 식별자)를 지정합니다. 이 특성에는 설명하는 메서드, 필드 또는 속성에 대한 DISPID가 포함됩니다.

COM interop 도구는 이 특성을 적용할 수 있습니다.
ComDefaultInterfaceAttribute .NET에서 구현된 COM 클래스의 기본 인터페이스를 나타냅니다.

COM interop 도구는 이 특성을 적용할 수 있습니다.
FieldOffsetAttribute StructLayoutAttribute와 함께 사용할 때 클래스 내의 각 필드의 실제 위치를 나타내며 LayoutKind는 Explicit로 설정됩니다.
GuidAttribute 클래스, 인터페이스 또는 전체 형식 라이브러리의 GUID(Globally Unique Identifier)를 지정합니다. 특성에 전달된 문자열은 System.Guid 형식에 허용되는 생성자 인수인 형식이어야 합니다.

COM interop 도구는 이 특성을 적용할 수 있습니다.
IDispatchImplAttribute 공용 언어 런타임에서 이중 인터페이스 및 dispinterface를 COM에 노출할 때 사용하는 IDispatch 인터페이스 구현을 나타냅니다.
InAttribute 데이터를 호출자에게 전달해야 함을 나타냅니다. 특성 매개 변수에 사용할 수 있습니다.
InterfaceTypeAttribute 관리되는 인터페이스가 COM 클라이언트에 노출되는 방식을 제어합니다(듀얼, IUnknown 기반, IDispatch만 해당).

COM interop 도구는 이 특성을 적용할 수 있습니다.
LCIDConversionAttribute 관리되지 않는 메서드 서명에 LCID 매개 변수가 있음을 나타냅니다.

COM interop 도구는 이 특성을 적용할 수 있습니다.
MarshalAsAttribute 관리 코드와 관리되지 않는 코드 간에 필드 또는 매개 변수의 데이터를 마샬링하는 방법을 나타냅니다. 각 데이터 형식에는 기본 마샬링 동작이 있기 때문에 특성은 항상 선택 사항입니다.

COM interop 도구는 이 특성을 적용할 수 있습니다.
OptionalAttribute 매개 변수가 선택 사항임을 나타냅니다.

COM interop 도구는 이 특성을 적용할 수 있습니다.
OutAttribute 필드 또는 매개 변수의 데이터를 호출된 개체에서 해당 호출자에게 다시 마샬링해야 했음을 나타냅니다.
PreserveSigAttribute 상호 운용 호출 중에 일반적으로 발생하는 HRESULT 또는 반환값 서명 변환을 억제합니다. 이 특성은 형식 라이브러리 내보내기뿐만 아니라 마샬링에도 영향을 줍니다.

COM interop 도구는 이 특성을 적용할 수 있습니다.
ProgIdAttribute .NET 클래스의 ProgID를 지정합니다. 특성 클래스에 사용할 수 있습니다.
StructLayoutAttribute 클래스 필드의 실제 레이아웃을 제어합니다.

COM interop 도구는 이 특성을 적용할 수 있습니다.

Conversion-Tool 특성

다음 표에서는 변환 프로세스 중에 COM interop 도구가 적용되는 특성을 설명합니다. 디자인 타임에는 이러한 특성을 적용하지 않습니다.

특성 설명
ComAliasNameAttribute 매개 변수 또는 필드 형식에 대한 COM 별칭을 나타냅니다. 매개 변수, 필드 또는 반환 값을 특성 지정하는 데 사용할 수 있습니다.
ComConversionLossAttribute 형식 라이브러리에서 어셈블리로 가져올 때 클래스 또는 인터페이스에 대한 정보가 손실되었음을 나타냅니다.
ComEventInterfaceAttribute 이벤트 인터페이스의 메서드를 구현하는 소스 인터페이스 및 클래스를 식별합니다.
ImportedFromTypeLibAttribute 어셈블리가 원래 COM 형식 라이브러리에서 가져온 것임을 나타냅니다. 이 특성에는 원래 형식 라이브러리의 형식 라이브러리 정의가 포함됩니다.
TypeLibFuncAttribute COM 형식 라이브러리에서 이 함수에 대해 원래 가져온 FUNCFLAGS 를 포함합니다.
TypeLibTypeAttribute COM 형식 라이브러리에서 이 형식에 대해 원래 가져온 TYPEFLAGS 를 포함합니다.
TypeLibVarAttribute COM 형식 라이브러리에서 이 변수에 대해 원래 가져온 VARFLAGS 를 포함합니다.

참고하십시오