ClassInterfaceAttribute ClassInterfaceAttribute ClassInterfaceAttribute ClassInterfaceAttribute Class

정의

인터페이스가 생성될 경우 COM에 노출된 클래스에 대해 생성될 클래스 인터페이스의 형식을 나타냅니다.Indicates the type of class interface to be generated for a class exposed to COM, if an interface is generated at all.

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

예제

다음 예제에 적용 하는 방법을 보여 줍니다 합니다 ClassInterfaceAttribute 사용 하 여는 ClassInterfaceTypeAutoDispatch를 생성 하는 IDispatch 에 대 한 인터페이스 MyClass.The following example shows how to apply the ClassInterfaceAttribute with the ClassInterfaceType value AutoDispatch, which generates an IDispatch interface for MyClass.

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

설명

어셈블리 또는 클래스에이 특성을 적용할 수 있습니다.You can apply this attribute to assemblies or classes.

이 특성은 형식 라이브러리 내보내기 (Tlbexp.exe) 특성 사용된 클래스에 대 한 클래스 인터페이스를 자동으로 생성 하는지 여부를 제어 합니다.This attribute controls whether the Type Library Exporter (Tlbexp.exe) automatically generates a class interface for the attributed class. 클래스 인터페이스 자체 클래스와 동일한 이름이 포함 되어 있지만 이름 앞에 밑줄이 추가 됩니다.A class interface carries the same name as the class itself, but the name is prefixed with an underscore. 클래스 인터페이스를 노출 하는 경우 모든 포함 된 public아닌- static 해당 기본 클래스에서 상속 된 멤버를 포함 하 여 관리 되는 클래스의 멤버입니다.When exposed, the class interface contains all the public, non- static members of the managed class, including members inherited from its base class. 관리 되는 클래스는 클래스 인터페이스에 액세스 하 고 클래스 멤버에 직접 액세스할 수를 지정할 필요가 없는 수 없습니다.Managed classes cannot access a class interface and have no need to as they can access the class members directly. Tlbexp.exe는 고유 IID (인터페이스 식별자) 클래스 인터페이스를 생성합니다.Tlbexp.exe generates a unique interface identifier (IID) for the class interface.

클래스 인터페이스는 이중 또는 디스패치 전용 인터페이스를 수 있습니다.Class interfaces can be dual or dispatch-only interfaces. 필요에 따라 클래스 인터페이스의 생성 되지 않도록 하 고 사용자 지정 인터페이스를 대신 제공할 수 있습니다.Optionally, you can suppress the generation of the class interface and provide a custom interface instead. 노출 하거나 지정 하 여 클래스 인터페이스를 표시 하지 않으려면을 System.Runtime.InteropServices.ClassInterfaceType 열거형 멤버입니다.You expose or suppress a class interface by specifying a System.Runtime.InteropServices.ClassInterfaceType enumeration member. 적용 하는 경우 ClassInterfaceAttribute 어셈블리에 특성을 관련 된 모든 어셈블리의 클래스를 개별 클래스 자체 특성을 사용 하 여 설정을 재정의 하지 않는 경우.When you apply ClassInterfaceAttribute to an assembly, the attribute pertains to all classes in the assembly unless the individual classes override the setting with their own attribute.

클래스 인터페이스를 명시적으로 각 클래스에 대 한 인터페이스를 정의 하는 작업을 제거 하지만 프로덕션 응용 프로그램에서 용도 사용 하는 것이 좋습니다.Although class interfaces eliminate the task of explicitly defining interfaces for each class, their use in production applications is strongly discouraged. 이중 클래스 인터페이스가 클라이언트가 클래스 발전 함에 따라 변경 될 수 있는 특정 인터페이스 레이아웃에 바인딩할 수 있습니다.Dual class interfaces allow clients to bind to a specific interface layout that is subject to change as the class evolves. 예를 들어 관리 되는 클래스를를 COM 클라이언트는 클래스 인터페이스를 노출 하는 것이 좋습니다.For example, consider a managed class that exposes a class interface to COM clients. 메서드를 포함 하는 클래스의 첫 번째 버전 NorthSouth입니다.The first version of the class contains methods North and South. 관리 되지 않는 클라이언트를 제공 하는 클래스 인터페이스에 바인딩할 수 있습니다 North 메서드와 클래스 인터페이스의 첫 번째 방법으로 South 두 번째 방법으로 합니다.An unmanaged client can bind to the class interface, which provides North as the first method in the class interface and method South as the second method. 이제 새 메서드가 있는 클래스의 다음 버전을 고려 East메서드 간에 삽입 된 NorthSouth입니다.Now consider the next version of the class, which has a new method, East, inserted between methods North and South. 이전 클래스 인터페이스를 통해 새 클래스에 바인딩하려고 하는 관리 되지 않는 클라이언트 종료 메서드를 호출 East 메서드를 호출 하려는 경우 South이므로 메서드는 인터페이스 내에서 위치가 변경 되었습니다.Unmanaged clients that try to bind to the new class through the old class interface end up calling method East when they intend to call method South, because the positioning of methods within the interface has changed. 또한 기본 클래스의 레이아웃을 변경한 모든 파생된 클래스에 대 한 클래스 인터페이스의 레이아웃을 달라 집니다.Moreover, any change to the layout of a base class also affects the layout of the class interface for all derived classes. 클라이언트에 바인딩되는 직접 클래스를 지원 하지 않는 동일한 버전 관리 문제를 관리 합니다.Managed clients, which bind directly to classes, do not exhibit the same versioning problems. 클래스 인터페이스를 사용 하 여 특정 지침을 참조 하세요 COM Callable Wrapper합니다.For specific guidelines on using a class interface, see COM Callable Wrapper.

합니다 Tlbimp.exe (형식 라이브러리 가져오기) 가져온된 클래스에 항상 적용 됩니다는 ClassInterfaceType.None 관리 되는 인터페이스를 기존 COM 노출 되지 클래스를 나타내는 열거형 멤버입니다.The Tlbimp.exe (Type Library Importer) always applies to imported classes the ClassInterfaceType.None enumeration member to indicate that existing COM classes never expose managed interfaces.

생성자

ClassInterfaceAttribute(ClassInterfaceType) ClassInterfaceAttribute(ClassInterfaceType) ClassInterfaceAttribute(ClassInterfaceType) ClassInterfaceAttribute(ClassInterfaceType)

지정된 ClassInterfaceAttribute 열거형 멤버를 사용하여 ClassInterfaceType 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ClassInterfaceAttribute class with the specified ClassInterfaceType enumeration member.

ClassInterfaceAttribute(Int16) ClassInterfaceAttribute(Int16) ClassInterfaceAttribute(Int16) ClassInterfaceAttribute(Int16)

지정된 ClassInterfaceAttribute 열거형 값을 사용하여 ClassInterfaceType 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ClassInterfaceAttribute class with the specified ClassInterfaceType enumeration value.

속성

TypeId TypeId TypeId TypeId

파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
Value Value Value Value

클래스에 대해 어떤 형식의 인터페이스가 생성되어야 하는지를 설명하는 ClassInterfaceType 값을 가져옵니다.Gets the ClassInterfaceType value that describes which type of interface should be generated for the class.

메서드

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

이 인스턴스가 지정한 개체와 같은지를 나타내는 값을 반환합니다.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(Inherited from Object)

명시적 인터페이스 구현

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

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

적용 대상

추가 정보