Share via


相互運用固有の属性の適用

更新 : 2007 年 11 月

System.Runtime.InteropServices 名前空間では、デザイン時に作成者が適用する属性、変換処理中に COM 相互運用ツールおよび API によって適用される属性、作成者または COM 相互運用機能によって適用される属性という 3 種類の相互運用固有の属性が提供されます。

マネージ コードに属性を適用する作業に習熟していない場合は、「属性を使用したメタデータの拡張」を参照してください。他のカスタム属性の場合と同様に、相互運用固有の属性は、型、メソッド、プロパティ、パラメータ、フィールド、およびその他のメンバに対して適用できます。

デザイン時属性

COM 相互運用ツールおよび API によって実行された変換処理の結果を調整するには、デザイン時属性を使用します。マネージ ソース コードに適用できる属性の説明を次の表に示します。COM 相互運用ツールがこの表で示す属性を適用できる場合もあります。

属性

説明

AutomationProxyAttribute

型をマーシャリングするときに、オートメーション マーシャラと、カスタム プロキシおよびスタブのどちらを使用するかを指定します。

ClassInterfaceAttribute

クラスに対して生成されたインターフェイスの型を制御します。

CoClassAttribute

タイプ ライブラリからインポートされた元のコクラスの CLSID を識別します。

COM 相互運用ツールでは、通常この属性が適用されます。

ComImportAttribute

コクラスまたはインターフェイス定義が COM タイプ ライブラリからインポートされたことを示します。ランタイムは、このフラグを使ってその型をアクティブ化およびマーシャリングする方法を識別します。この属性は、型がタイプ ライブラリにエクスポートされることを禁止します。

COM 相互運用ツールでは、通常この属性が適用されます。

ComRegisterFunctionAttribute

COM から使用するためにアセンブリを登録するときに、メソッドが呼び出されるようにします。これによって、登録処理中にユーザー作成コードを実行できます。

ComSourceInterfacesAttribute

クラスのイベントの発生元になるインターフェイスを識別します。

COM 相互運用ツールでは、この属性を適用できます。

ComUnregisterFunctionAttribute

アセンブリが COM から登録解除されるときメソッドが呼び出されるようにして、登録解除処理中にユーザー作成コードを実行できるようにします。

ComVisibleAttribute

この属性の値を false に設定すると、型を COM から参照できなくなります。この属性は、COM の参照可能範囲を制御するために、個別の型またはアセンブリ全体に適用できます。既定では、すべてのパブリックなマネージ型は参照可能なので、この属性を使ってこれらの型を参照可能にする必要はありません。

DispIdAttribute

メソッドまたはフィールドの COM ディスパッチ識別子 (DISPID: Dispatch Identifier) を指定します。この属性には、対象のメソッド、フィールド、またはプロパティの DISPID が含まれています。

COM 相互運用ツールでは、この属性を適用できます。

FieldOffsetAttribute

StructLayoutAttribute と共に使用すると、クラス内の各フィールドの物理的位置を示します。さらに、LayoutKind が Explicit に設定されます。

GuidAttribute

クラス、インターフェイス、またはタイプ ライブラリ全体のグローバル一意識別子 (GUID: Globally Unique Identifier) を指定します。この属性に渡す文字列は、System.Guid 型の受け入れ可能なコンストラクタの引数の形式であることが必要です。

COM 相互運用ツールでは、この属性を適用できます。

IDispatchImpAttribute

COM にデュアル インターフェイスやディスパッチ インターフェイスを公開するときに、共通言語ランタイムで使用する IDispatch インターフェイスの実装の種類を示します。

InAttribute

呼び出し元に対してデータをマーシャリングして渡すことを示します。属性パラメータに対して使用できます。

InterfaceTypeAttribute

マネージ インターフェイスを COM クライアントに公開する方法を制御します (デュアル、IUnknown ベース、または IDispatch 限定のいずれか)。

COM 相互運用ツールでは、この属性を適用できます。

LCIDConversionAttribute

アンマネージ メソッド シグネチャが LCID パラメータを期待していることを示します。

COM 相互運用ツールでは、この属性を適用できます。

MarshalAsAttribute

マネージ コードとアンマネージ コードとの間で、フィールドまたはパラメータ内のデータをマーシャリングする方法を示します。各データ型には既定のマーシャリング動作があるため、この属性は常に省略できます。

COM 相互運用ツールでは、この属性を適用できます。

OptionalAttribute

パラメータが省略可能であることを示します。

COM 相互運用ツールでは、この属性を適用できます。

OutAttribute

フィールドまたはパラメータ内のデータが、呼び出されたオブジェクトから呼び出し元に返されるときに、マーシャリングされる必要のあることを示します。

PreserveSigAttribute

通常は相互運用呼び出しのときに発生する、HRESULT または retval シグネチャ変換を抑止します。この属性は、タイプ ライブラリのエクスポートだけでなく、マーシャリングにも影響します。

COM 相互運用ツールでは、この属性を適用できます。

ProgIdAttribute

.NET Framework クラスの ProgID を指定します。属性クラスに対して使用できます。

StructLayoutAttribute

クラスのフィールドの物理レイアウトを制御します。

COM 相互運用ツールでは、この属性を適用できます。

変換ツールの属性

変換処理中に COM 相互運用ツールが適用する属性の説明を次の表に示します。これらの属性は、デザイン時には適用しません。

属性

説明

ComAliasNameAttribute

パラメータ型またはフィールド型の COM のエイリアスを示します。属性パラメータ、フィールド、または戻り値に対して使用できます。

ComConversionLossAttribute

クラスまたはインターフェイスに関する情報が、タイプ ライブラリからアセンブリにインポートされるときに失われたことを示します。

ComEventInterfaceAttribute

ソース インターフェイスと、イベント インターフェイスのメソッドを実装するクラスを識別します。

ImportedFromTypeLibAttribute

アセンブリが元は COM タイプ ライブラリからインポートされたことを示します。この属性は、元のタイプ ライブラリのタイプ ライブラリ定義を含んでいます。

TypeLibFuncAttribute

元はこの関数のために COM タイプ ライブラリからインポートされた FUNCFLAGS を含んでいます。

TypeLibTypeAttribute

元はこの型のために COM タイプ ライブラリからインポートされた TYPEFLAGS を含んでいます。

TypeLibVarAttribute

元はこの変数のために COM タイプ ライブラリからインポートされた VARFLAGS を含んでいます。

参照

概念

COM への .NET Framework コンポーネントの公開

相互運用のための .NET 型の要件

COM 用のアセンブリのパッケージ化

参照

System.Runtime.InteropServices

その他の技術情報

属性を使用したメタデータの拡張