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

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

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

デザイン時属性

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

属性 説明
AutomationProxyAttribute Automation マーシャラーまたはカスタムのプロキシとスタブを使用して、型をマーシャリングするかどうかを指定します。
ClassInterfaceAttribute クラスに対して生成されたインターフェイスの型を制御します。
CoClassAttribute タイプ ライブラリからインポートされた元のコクラスの CLSID を識別します。

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

COM 相互運用ツールでは、通常、この属性が適用されます。
ComRegisterFunctionAttribute COM から使用するためにアセンブリを登録するときに、メソッドが呼び出されるようにします。これで、登録処理中にユーザー作成コードを実行できます。
ComSourceInterfacesAttribute クラスのイベントの発生元になるインターフェイスを識別します。

COM 相互運用ツールでは、この属性を適用できます。
ComUnregisterFunctionAttribute アセンブリが COM から登録解除されるときにメソッドが呼び出されるようにします。これで、処理中にユーザー作成コードを実行できます。
ComVisibleAttribute 属性値が false の場合、型は COM から参照できなくなります。 この属性は、COM の参照可能範囲を制御するために、個別の型またはアセンブリ全体に適用できます。 既定では、すべてのパブリックなマネージド型は参照可能なので、この属性でこれらの型を参照可能にする必要はありません。
DispIdAttribute メソッドまたはフィールドの COM ディスパッチ識別子 (DISPID) を指定します。 この属性には、対象のメソッド、フィールド、またはプロパティの DISPID が含まれています。

COM 相互運用ツールでは、この属性を適用できます。
ComDefaultInterfaceAttribute .NET に実装されている COM クラスの既定のインターフェイスを示します。

COM 相互運用ツールでは、この属性を適用できます。
FieldOffsetAttribute StructLayoutAttribute と共に使用される場合は、クラス内の各フィールドの物理的位置を示します。LayoutKind は Explicit に設定されます。
GuidAttribute クラス、インターフェイス、またはタイプ ライブラリ全体のグローバル一意識別子 (GUID) を指定します。 属性に渡される文字列は、System.Guid 型の受け入れ可能なコンストラクター引数の形式である必要があります。

COM 相互運用ツールでは、この属性を適用できます。
IDispatchImplAttribute COM にデュアル インターフェイスやディスパッチ インターフェイスを公開するときに、共通言語ランタイムで使用する IDispatch インターフェイスの実装の種類を示します。
InAttribute 呼び出し元にデータをマーシャリングすることを示します。 属性パラメーターに使用できます。
InterfaceTypeAttribute マネージド インターフェイスを COM クライアントに公開する方法を制御します (デュアル、IUnknown から派生、または IDispatch のみ)。

COM 相互運用ツールでは、この属性を適用できます。
LCIDConversionAttribute アンマネージ メソッド シグネチャで LCID パラメーターが必要であることを示します。

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

COM 相互運用ツールでは、この属性を適用できます。
OptionalAttribute パラメーターが省略可能であることを示します。

COM 相互運用ツールでは、この属性を適用できます。
OutAttribute フィールドまたはパラメーター内のデータが、呼び出されたオブジェクトから呼び出し元に返されるときに、マーシャリングされる必要があることを示します。
PreserveSigAttribute 通常は相互運用呼び出し時に発生する、HRESULT または retval シグネチャ変換を抑止します。 この属性は、タイプ ライブラリのエクスポートだけでなく、マーシャリングにも影響します。

COM 相互運用ツールでは、この属性を適用できます。
ProgIdAttribute .NET クラスの ProgID を指定します。 属性パラメーターに使用できます。
StructLayoutAttribute クラスのフィールドの物理レイアウトを制御します。

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

変換ツール属性

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

属性 説明
ComAliasNameAttribute パラメーターまたはフィールドの種類の COM エイリアスを示します。 属性パラメーター、フィールド、または戻り値に使用できます。
ComConversionLossAttribute クラスまたはインターフェイスに関する情報が、タイプ ライブラリからアセンブリにインポートされたときに失われたことを示します。
ComEventInterfaceAttribute ソース インターフェイスと、イベント インターフェイスのメソッドを実装するクラスを識別します。
ImportedFromTypeLibAttribute アセンブリが元は COM タイプ ライブラリからインポートされたことを示します。 この属性には、元のタイプ ライブラリのタイプ ライブラリ定義が含まれます。
TypeLibFuncAttribute 元はこの関数のために COM タイプ ライブラリからインポートされた FUNCFLAGS が含まれます。
TypeLibTypeAttribute 元はこの型のために COM タイプ ライブラリからインポートされた TYPEFLAGS が含まれます。
TypeLibVarAttribute 元はこの変数のために COM タイプ ライブラリからインポートされた VARFLAGS が含まれます。

関連項目