ClassInterfaceType 열거형
클래스에 대해 생성되는 클래스 인터페이스의 형식을 식별합니다.
네임스페이스: System.Runtime.InteropServices
어셈블리: mscorlib(mscorlib.dll)
구문
‘선언
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration ClassInterfaceType
‘사용 방법
Dim instance As ClassInterfaceType
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum ClassInterfaceType
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum class ClassInterfaceType
/** @attribute SerializableAttribute() */
/** @attribute ComVisibleAttribute(true) */
public enum ClassInterfaceType
SerializableAttribute
ComVisibleAttribute(true)
public enum ClassInterfaceType
멤버
멤버 이름 | 설명 | |
---|---|---|
AutoDispatch | 클래스가 COM 클라이언트에 대해 런타임에 바인딩만 지원함을 나타냅니다. 클래스의 dispinterface는 요청 시 COM 클라이언트에 자동으로 노출됩니다. 형식 라이브러리 내보내기(Tlbexp.exe) 형식에서 생성된 형식 라이브러리는 클라이언트가 인터페이스의 DISPID를 캐시하지 못하게 하기 위해 dispinterface에 대한 형식 정보를 포함하지 않습니다. 클라이언트는 런타임에만 인터페이스에 바인딩할 수 있으므로 dispinterface는 ClassInterfaceAttribute에서 설명한 버전 관리 문제를 나타내지 않습니다.
이것이 ClassInterfaceAttribute에 대한 기본 설정입니다. |
|
AutoDual | 이중 클래스 인터페이스가 클래스에 대해 자동으로 생성되고 COM에 노출됨을 나타냅니다. 클래스 인터페이스에 대해 형식 정보가 생성되어 형식 라이브러리에 게시됩니다. ClassInterfaceAttribute에서 설명하는 것처럼 버전 관리 제한 때문에 AutoDual은 사용하지 않아야 합니다. | |
None | 해당 클래스에 대해 클래스 인터페이스가 생성되지 않음을 나타냅니다. 명시적으로 구현되는 인터페이스가 없으면 런타임에 바인딩될 때 IDispatch 인터페이스를 통해서만 클래스에 액세스할 수 있습니다. 이것이 ClassInterfaceAttribute에 대해 권장되는 설정입니다. 클래스에서 명시적으로 구현한 인터페이스를 통해 기능을 노출시키는 유일한 방법은 ClassInterfaceType.None을 사용하는 것입니다.
형식 라이브러리 내보내기(Tlbexp.exe)는 클래스에서 구현한 COM에 표시되는 첫 번째 공용 인터페이스를 coclass의 기본 인터페이스로 노출시킵니다. .NET Framework 버전 2.0부터 ComDefaultInterfaceAttribute 특성을 사용하여 COM으로 노출되는 기본 인터페이스를 지정할 수 있습니다. 클래스에서 인터페이스를 구현하지 않을 경우, 가장 최근에 파생된 기본 클래스 및 작업부터는 기본 클래스에서 구현한 COM에 표시되는 첫 번째 공용 인터페이스가 기본 인터페이스입니다. 클래스 및 기본 클래스에서 모두 인터페이스를 구현하지 않으면 Tlbexp.exe가 _Object를 기본 인터페이스로 노출시킵니다. |
설명
이 열거형은 ClassInterfaceAttribute 특성과 함께 사용됩니다.
예제
이 예제에서는 ClassInterfaceAttribute를 형식에 적용하여 ClassInterfaceType을 설정하는 방법을 보여 줍니다. 이런 식으로 정의된 클래스는 비관리 COM에서 사용할 수 있습니다.
using System;
using System.Runtime.InteropServices;
// Have the CLR expose a class interface (derived from IDispatch) for this type.
// COM clients can call the members of this class using the Invoke method from the IDispatch interface.
[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class AClassUsableViaCOM
{
public AClassUsableViaCOM() { }
public Int32 Add(Int32 x, Int32 y) { return x + y; }
}
// The CLR does not expose a class interface for this type.
// COM clients can call the members of this class using the methods from the IComparable interface.
[ClassInterface(ClassInterfaceType.None)]
public class AnotherClassUsableViaCOM : IComparable
{
public AnotherClassUsableViaCOM() { }
Int32 IComparable.CompareTo(Object o) { return 0; }
}
using namespace System;
using namespace System::Runtime::InteropServices;
// Have the CLR expose a class interface (derived from IDispatch)
// for this type. COM clients can call the members of this
// class using the Invoke method from the IDispatch interface.
[ClassInterface(ClassInterfaceType::AutoDispatch)]
public ref class AClassUsableViaCOM
{
public:
AClassUsableViaCOM()
{
}
public:
int Add(int x, int y)
{
return x + y;
}
};
// The CLR does not expose a class interface for this type.
// COM clients can call the members of this class using
// the methods from the IComparable interface.
[ClassInterface(ClassInterfaceType::None)]
public ref class AnotherClassUsableViaCOM : public IComparable
{
public:
AnotherClassUsableViaCOM()
{
}
virtual int CompareTo(Object^ o) = IComparable::CompareTo
{
return 0;
}
};
플랫폼
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에서 지원
참고 항목
참조
System.Runtime.InteropServices 네임스페이스