InterfaceTypeAttribute 클래스
관리되는 인터페이스를 COM에 노출할 경우 이중 인터페이스인지, 디스패치 전용 인터페이스인지 또는 IUnknown 전용 인터페이스인지 여부를 나타냅니다.
네임스페이스: System.Runtime.InteropServices
어셈블리: mscorlib(mscorlib.dll)
구문
‘선언
<AttributeUsageAttribute(AttributeTargets.Interface, Inherited:=False)> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class InterfaceTypeAttribute
Inherits Attribute
‘사용 방법
Dim instance As InterfaceTypeAttribute
[AttributeUsageAttribute(AttributeTargets.Interface, Inherited=false)]
[ComVisibleAttribute(true)]
public sealed class InterfaceTypeAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Interface, Inherited=false)]
[ComVisibleAttribute(true)]
public ref class InterfaceTypeAttribute sealed : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Interface, Inherited=false) */
/** @attribute ComVisibleAttribute(true) */
public final class InterfaceTypeAttribute extends Attribute
AttributeUsageAttribute(AttributeTargets.Interface, Inherited=false)
ComVisibleAttribute(true)
public final class InterfaceTypeAttribute extends Attribute
설명
이 특성을 인터페이스에 적용할 수 있습니다.
기본적으로 형식 라이브러리 내보내기(Tlbexp.exe)는 관리되는 인터페이스를 이중 인터페이스로 COM에 노출시켜 런타임에 바인딩하거나 초기에 바인딩할 수 있도록 합니다. ComInterfaceType 열거형을 사용하면 기본 동작을 재정의하고 런타임에 바인딩만 지정하거나 초기 바인딩만 지정할 수 있습니다. 예를 들어, 인터페이스에 InterfaceType (ComInterfaceType.InterfaceIsIDispatch)
을 적용하여 호출자를 런타임에 바인딩으로만 제한하는 메타데이터를 생성할 수 있습니다. IDispatch 인터페이스에서 파생된 인터페이스는 대부분 이중 인터페이스이지만 InterfaceIsIDispatch 열거형 멤버를 사용하여 인터페이스 메서드가 런타임에만 호출되도록 할 수 있습니다. 이 특성은 인터페이스의 관리되는 뷰에 영향을 미치지 않습니다. COM에 인터페이스를 노출시키는 방법에 대한 자세한 내용은 내보낸 형식 변환을 참조하십시오.
형식 라이브러리 가져오기(Tlbimp.exe)는 이 특성을 이중 인터페이스가 아닌 가져온 인터페이스에도 적용하고, 적절한 열거형 멤버를 사용하여 인터페이스가 디스패치 전용 또는 IUnknown 전용임을 나타냅니다.
예제
다음 예제는 인터페이스를 COM에 노출하는 방법을 InterfaceTypeAttribute가 제어하는 법을 보여 줍니다.
Imports System.Runtime.InteropServices
'Interface is exposed to COM as dual.
Interface IMyInterface1
'Insert code here.
End Interface
'Interface is exposed to COM as IDispatch.
<InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)> _
Interface IMyInterface2
'Insert code here.
End Interface
using System.Runtime.InteropServices;
//Interface is exposed to COM as dual.
interface IMyInterface1
{
//Insert code here.
}
//Interface is exposed to COM as IDispatch.
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
interface IMyInterface2
{
//Insert code here.
}
using namespace System::Runtime::InteropServices;
//Interface is exposed to COM as dual.
interface class IMyInterface1{};
//Insert code here.
//Interface is exposed to COM as IDispatch.
[InterfaceTypeAttribute(ComInterfaceType::InterfaceIsIDispatch)]
interface class IMyInterface2{};
//Insert code here.
import System.Runtime.InteropServices.*;
//Interface is exposed to COM as dual.
interface IMyInterface1
{
//Insert code here.
} //IMyInterface1
//Interface is exposed to COM as IDispatch.
/** @attribute InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)
*/
interface IMyInterface2
{
//Insert code here.
} //IMyInterface2
import System.Runtime.InteropServices
//Interface will be exposed to COM as dual.
interface IMyInterface1{
// ...
}
//Interface will be exposed to COM as IDispatch.
public InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)
interface IMyInterface2{
// ...
}
상속 계층 구조
System.Object
System.Attribute
System.Runtime.InteropServices.InterfaceTypeAttribute
스레드로부터의 안전성
이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.
플랫폼
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.
버전 정보
.NET Framework
2.0, 1.1, 1.0에서 지원
.NET Compact Framework
2.0에서 지원
참고 항목
참조
InterfaceTypeAttribute 멤버
System.Runtime.InteropServices 네임스페이스
ComInterfaceType 열거형