ClassInterfaceAttribute 클래스

정의

인터페이스가 생성될 경우 COM에 노출된 클래스에 대해 생성될 클래스 인터페이스의 형식을 나타냅니다.

public ref class ClassInterfaceAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)]
public sealed class ClassInterfaceAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ClassInterfaceAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)>]
type ClassInterfaceAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ClassInterfaceAttribute = class
    inherit Attribute
Public NotInheritable Class ClassInterfaceAttribute
Inherits Attribute
상속
ClassInterfaceAttribute
특성

예제

다음 예제에서는 에 대 MyClass한 인터페이스를 생성 하는 값을 AutoDispatch사용 하 여 를 적용 ClassInterfaceAttributeClassInterfaceType 하는 IDispatch 방법을 보여 줍니다.

using namespace System::Runtime::InteropServices;

[ClassInterface(ClassInterfaceType::AutoDispatch)]
public ref class MyClass
{
public:
   MyClass(){}

};
using System.Runtime.InteropServices;

[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class MyClass
{
   public MyClass() {}
}
Imports System.Runtime.InteropServices

<ClassInterface(ClassInterfaceType.AutoDispatch)> _
Public Class SampleClass    
    ' Insert class members here.
End Class

설명

이 특성을 어셈블리 또는 클래스에 적용할 수 있습니다.

이 특성은 형식 라이브러리 내보내기(Tlbexp.exe)가 특성 클래스에 대한 클래스 인터페이스를 자동으로 생성하는지 여부를 제어합니다. 클래스 인터페이스는 클래스 자체와 동일한 이름을 전달하지만 이름은 밑줄 접두사로 지정됩니다. 노출되면 클래스 인터페이스에는 기본 클래스에서 상속된 멤버를 포함하여 관리되는 클래스의 모든 public가 아닌 static 멤버가 포함됩니다. 관리되는 클래스는 클래스 인터페이스에 액세스할 수 없으며 클래스 멤버에 직접 액세스할 수 있으므로 필요하지 않습니다. Tlbexp.exe 클래스 인터페이스에 대한 고유 인터페이스 식별자(IID)를 생성합니다.

클래스 인터페이스는 이중 또는 디스패치 전용 인터페이스일 수 있습니다. 필요에 따라 클래스 인터페이스의 생성을 표시하지 않고 사용자 지정 인터페이스를 대신 제공할 수 있습니다. 열거형 멤버를 지정하여 클래스 인터페이스를 System.Runtime.InteropServices.ClassInterfaceType 노출하거나 표시하지 않습니다. 어셈블리에 적용 ClassInterfaceAttribute 할 때 특성은 개별 클래스가 고유한 특성으로 설정을 재정의하지 않는 한 어셈블리의 모든 클래스와 관련이 있습니다.

클래스 인터페이스를 명시적으로 각 클래스에 대 한 인터페이스를 정의 하는 작업을 제거 하지만 프로덕션 애플리케이션에서 용도 사용 하는 것이 좋습니다. 이중 클래스 인터페이스를 사용하면 클라이언트가 클래스가 발전함에 따라 변경될 수 있는 특정 인터페이스 레이아웃에 바인딩할 수 있습니다. 예를 들어 COM 클라이언트에 클래스 인터페이스를 노출하는 관리되는 클래스를 고려합니다. 클래스의 첫 번째 버전에는 및 메서드 NorthSouth가 포함되어 있습니다. 관리되지 않는 클라이언트는 클래스 인터페이스에 바인딩할 수 있습니다. 클래스 인터페이스에서 첫 번째 메서드로 를 제공하고 메서드를 두 번째 메서드 South 로 제공합니다North. 이제 메서드와 South사이에 North 삽입된 새 메서드 가 East있는 클래스의 다음 버전을 고려합니다. 이전 클래스 인터페이스를 통해 새 클래스에 바인딩하려고 하는 관리되지 않는 클라이언트는 인터페이스 내에서 메서드 East 의 위치가 변경되었기 때문에 메서드를 호출하려고 할 때 메서드 South를 호출하게 됩니다. 또한 기본 클래스의 레이아웃을 변경하면 모든 파생 클래스의 클래스 인터페이스 레이아웃에도 영향을 줍니다. 클래스에 직접 바인딩하는 관리되는 클라이언트는 동일한 버전 관리 문제를 나타내지 않습니다. 클래스 인터페이스 사용에 대한 구체적인 지침은 COM 호출 가능 래퍼를 참조하세요.

Tlbimp.exe(형식 라이브러리 가져오기)는 항상 기존 COM 클래스가 관리되는 인터페이스를 ClassInterfaceType.None 노출하지 않음을 나타내기 위해 열거형 멤버를 가져온 클래스에 적용됩니다.

생성자

ClassInterfaceAttribute(ClassInterfaceType)

지정된 ClassInterfaceAttribute 열거형 멤버를 사용하여 ClassInterfaceType 클래스의 새 인스턴스를 초기화합니다.

ClassInterfaceAttribute(Int16)

지정된 ClassInterfaceAttribute 열거형 값을 사용하여 ClassInterfaceType 클래스의 새 인스턴스를 초기화합니다.

속성

TypeId

파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다.

(다음에서 상속됨 Attribute)
Value

클래스에 대해 어떤 형식의 인터페이스가 생성되어야 하는지를 설명하는 ClassInterfaceType 값을 가져옵니다.

메서드

Equals(Object)

이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다.

(다음에서 상속됨 Attribute)
GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.

(다음에서 상속됨 Attribute)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
IsDefaultAttribute()

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.

(다음에서 상속됨 Attribute)
Match(Object)

파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.

(다음에서 상속됨 Attribute)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).

(다음에서 상속됨 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.

(다음에서 상속됨 Attribute)

적용 대상

추가 정보