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)]
public sealed class ClassInterfaceAttribute : Attribute
type ClassInterfaceAttribute = class
    inherit Attribute
Public NotInheritable Class ClassInterfaceAttribute
Inherits Attribute

次の例では、適用する方法を示しています、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;

public ref class MyClass


using System.Runtime.InteropServices;

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 は、クラス インターフェイスの一意のインターフェイス id (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クラス インターフェイスとメソッドの最初のメソッドとしてSouth2 番目のメソッドとして。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 呼び出し可能ラッパーします。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)