ClassInterfaceAttribute クラス
アセンブリ: mscorlib (mscorlib.dll 内)

<ComVisibleAttribute(True)> _ <AttributeUsageAttribute(AttributeTargets.Assembly Or AttributeTargets.Class, Inherited:=False)> _ Public NotInheritable Class ClassInterfaceAttribute Inherits Attribute
[ComVisibleAttribute(true)] [AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class, Inherited=false)] public sealed class ClassInterfaceAttribute : Attribute
[ComVisibleAttribute(true)] [AttributeUsageAttribute(AttributeTargets::Assembly|AttributeTargets::Class, Inherited=false)] public ref class ClassInterfaceAttribute sealed : public Attribute

この属性は、タイプ ライブラリ エクスポータ (Tlbexp.exe) が属性付きのクラスに対してクラス インターフェイスを自動的に生成するかどうかを制御します。クラス インターフェイスの名前は、クラス自体と同じですが、プリフィックスとしてアンダースコアが付きます。公開されると、クラス インターフェイスには、基本クラスから継承したメンバのほか、マネージ クラスのすべての public メンバと非 static メンバが含まれます。マネージ クラスからクラス インターフェイスにはアクセスできませんが、マネージ クラスの場合はメンバに直接アクセスできるため、その必要はありません。Tlbexp.exe は、クラス インターフェイスに対して一意のインターフェイス ID (IID) を生成します。
クラス インターフェイスには、デュアル インターフェイスとディスパッチ専用インターフェイスがあります。必要があれば、クラス インターフェイスを生成せずに、代わりにカスタム インターフェイスを提供することもできます。クラス インターフェイスを公開するかどうかは、System.Runtime.InteropServices.ClassInterfaceType 列挙体メンバを使用して指定します。ClassInterfaceAttribute をアセンブリに適用した場合、個々のクラスがそれぞれの属性で設定をオーバーライドしていない限り、この属性はアセンブリ内のすべてのクラスに適用されます。
クラス インターフェイスを使用すると、クラスごとにインターフェイスを明示的に定義する必要がなくなりますが、本運用のアプリケーションでこれを使用することはできる限り避けてください。デュアル クラス インターフェイスは、クライアントが、クラスの変化による影響を受けやすい特定のインターフェイス レイアウトにバインドできるようにします。たとえば、クラス インターフェイスを COM クライアントに公開するマネージ クラスについて考えてみます。最初のバージョンのクラスは、North メソッドと South メソッドを含んでいます。アンマネージ クライアントは、1 番目のメソッドとして North、2 番目のメソッドとして South を提供するクラス インターフェイスにバインドできます。次に、メソッド North と South の間に新しい East メソッドを挿入した、同じクラスの次のバージョンについて考えます。アンマネージ クライアントが以前のクラス インターフェイスを通じて新しいクラスにバインドしようとした場合は、インターフェイス内のメソッドの位置が変更されてしまっているため、South メソッドを呼び出そうとしたときに、East メソッドが呼び出されてしまうことになります。さらに、基本クラスのレイアウトを変更すると、すべての派生クラスのクラス インターフェイスのレイアウトにも影響があります。クラスに直接バインドするマネージ クライアントでは、このようなバージョン問題が発生しません。クラス インターフェイスの使用に関するガイドラインについては、「クラス インターフェイスの概要」を参照してください。
タイプ ライブラリ インポータ (Tlbimp.exe) は、既存の COM クラスがマネージ インターフェイスを公開することはないことを示すために、ClassInterfaceType.None 列挙体メンバをインポートされたクラスに対して常に適用します。

ClassInterfaceType に AutoDispatch を指定して ClassInterfaceAttribute を適用し、MyClass の IDispatch インターフェイスを生成する例を次に示します。
Imports System.Runtime.InteropServices <ClassInterface(ClassInterfaceType.AutoDispatch)> _ Public Class SampleClass ' Insert class members here. End Class
using System.Runtime.InteropServices; [ClassInterface(ClassInterfaceType.AutoDispatch)] public class MyClass { public MyClass() {} }

System.Attribute
System.Runtime.InteropServices.ClassInterfaceAttribute


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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ClassInterfaceAttribute コンストラクタ (ClassInterfaceType)
アセンブリ: mscorlib (mscorlib.dll 内)

Dim classInterfaceType As ClassInterfaceType Dim instance As New ClassInterfaceAttribute(classInterfaceType)


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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ClassInterfaceAttribute コンストラクタ

名前 | 説明 |
---|---|
ClassInterfaceAttribute (ClassInterfaceType) | 指定した ClassInterfaceType 列挙体メンバを使用して、ClassInterfaceAttribute クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |
ClassInterfaceAttribute (Int16) | ClassInterfaceType 列挙値を指定して、ClassInterfaceAttribute クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |

ClassInterfaceAttribute コンストラクタ (Int16)
アセンブリ: mscorlib (mscorlib.dll 内)


このコンストラクタは、ClassInterfaceType 列挙体の各メンバを表す、基になる 16 ビット符号付き整数値を受け取ります。タイプ ライブラリ インポータ (Tlbimp.exe) は、このコンストラクタを使用します。

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ClassInterfaceAttribute プロパティ

名前 | 説明 | |
---|---|---|
![]() | TypeId | 派生クラスに実装されている場合は、この Attribute の一意の識別子を取得します。 ( Attribute から継承されます。) |
![]() | Value | クラスに対して生成するインターフェイスの型について説明する ClassInterfaceType 値を取得します。 |

ClassInterfaceAttribute メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 ( Attribute から継承されます。) |
![]() | GetCustomAttribute | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用された指定した型のカスタム属性を取得します。 ( Attribute から継承されます。) |
![]() | GetCustomAttributes | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されたカスタム属性の配列を取得します。 ( Attribute から継承されます。) |
![]() | GetHashCode | このインスタンスのハッシュ コードを返します。 ( Attribute から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | IsDefaultAttribute | 派生クラス内でオーバーライドされたときに、このインスタンスの値が派生クラスの既定値かどうかを示します。 ( Attribute から継承されます。) |
![]() | IsDefined | オーバーロードされます。 指定した型のカスタム属性が、アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されているかどうかを判断します。 ( Attribute から継承されます。) |
![]() | Match | 派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 ( Attribute から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

ClassInterfaceAttribute メンバ
インターフェイスが生成される場合に、COM に公開されるクラスに対して生成されるクラス インターフェイスの型を示します。
ClassInterfaceAttribute データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | TypeId | 派生クラスに実装されている場合は、この Attribute の一意の識別子を取得します。(Attribute から継承されます。) |
![]() | Value | クラスに対して生成するインターフェイスの型について説明する ClassInterfaceType 値を取得します。 |

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 ( Attribute から継承されます。) |
![]() | GetCustomAttribute | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用された指定した型のカスタム属性を取得します。 (Attribute から継承されます。) |
![]() | GetCustomAttributes | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されたカスタム属性の配列を取得します。 (Attribute から継承されます。) |
![]() | GetHashCode | このインスタンスのハッシュ コードを返します。 (Attribute から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | IsDefaultAttribute | 派生クラス内でオーバーライドされたときに、このインスタンスの値が派生クラスの既定値かどうかを示します。 (Attribute から継承されます。) |
![]() | IsDefined | オーバーロードされます。 指定した型のカスタム属性が、アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されているかどうかを判断します。 (Attribute から継承されます。) |
![]() | Match | 派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 (Attribute から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

- ClassInterfaceAttributeのページへのリンク