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
属性

次の例は、 のインターフェイスを生成する 値 を持つ を ClassInterfaceAttribute ClassInterfaceType AutoDispatch 適用する方法 IDispatch を示しています 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

注釈

この属性は、アセンブリまたはクラスに適用できます。

この属性は、タイプ ライブラリ の Exporter (Tlbexp.exe) が属性付きクラスのクラス インターフェイスを自動的に生成するかどうかを制御します。 クラス インターフェイスはクラス自体と同じ名前を持っていますが、名前の先頭にはアンダースコアが付きます。 公開される場合、クラス インターフェイスには、その基本クラスから継承されたメンバーを含む、マネージド クラスのすべての 非メンバー public static が含まれる。 マネージド クラスはクラス インターフェイスにアクセスできないので、クラス メンバーに直接アクセスできる必要はありません。 Tlbexp.exeクラス インターフェイスの一意のインターフェイス識別子 (IID) を生成します。

クラス インターフェイスには、デュアル インターフェイスまたはディスパッチ専用インターフェイスを使用できます。 必要に応じて、クラス インターフェイスの生成を抑制し、代わりにカスタム インターフェイスを提供することもできます。 列挙型メンバーを指定して、クラス インターフェイスを公開または System.Runtime.InteropServices.ClassInterfaceType 抑制します。 アセンブリに適用すると、個々のクラスが独自の属性で設定をオーバーライドしない限り、 属性はアセンブリ内のすべてのクラス ClassInterfaceAttribute に関連します。

クラス インターフェイスでは、各クラスのインターフェイスを明示的に定義するタスクは不要ですが、実稼働アプリケーションでの使用は強く推奨されません。 デュアル クラス インターフェイスを使用すると、クライアントは、クラスの進化に伴って変更される可能性がある特定のインターフェイス レイアウトにバインドできます。 たとえば、COM クライアントにクラス インターフェイスを公開するマネージド クラスについて考えます。 クラスの最初のバージョンには、 メソッドと が含 North まれている South 。 アンマネージ クライアントはクラス インターフェイスにバインドできます。これは、クラス インターフェイスの最初のメソッドとして、2 番目のメソッドとして North メソッド South として提供します。 次に、 クラスの次のバージョンについて考え、メソッドと の間に新しいメソッド が East 挿入 North されています South 。 古いクラス インターフェイスを介して新しいクラスにバインドしようとするアンマネージド クライアントは、インターフェイス内のメソッドの配置が変更されたため、メソッドを呼び出す予定の場合にメソッドを呼び出 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)

適用対象

こちらもご覧ください