相互運用固有の属性の適用
System.Runtime.InteropServices 名前空間では、デザイン時に作成者が適用する属性、変換処理中に COM 相互運用ツールおよび API によって適用される属性、作成者または COM 相互運用機能によって適用される属性という 3 種類の相互運用固有の属性が提供されます。
マネージ コードに属性を適用する作業に習熟していない場合は、「属性を使用したメタデータの拡張」を参照してください。 他のカスタム属性の場合と同様に、相互運用固有の属性は、型、メソッド、プロパティ、パラメーター、フィールド、およびその他のメンバーに対して適用できます。
デザイン時属性
COM 相互運用ツールおよび API によって実行された変換処理の結果を調整するには、デザイン時属性を使用します。 マネージ ソース コードに適用できる属性の説明を次の表に示します。 COM 相互運用ツールがこの表で示す属性を適用できる場合もあります。
属性 |
説明 |
---|---|
Automation Marshaler またはカスタムのプロキシとスタブを使用して、型をマーシャリングするかどうかを指定します。 |
|
クラスに対して生成されたインターフェイスの型を制御します。 |
|
タイプ ライブラリからインポートされた元のコクラスの CLSID を識別します。 COM 相互運用ツールでは、通常この属性が適用されます。 |
|
コクラスまたはインターフェイス定義が COM タイプ ライブラリからインポートされたことを示します。 ランタイムは、このフラグを使ってその型をアクティブ化およびマーシャリングする方法を識別します。 この属性は、型がタイプ ライブラリにエクスポートされることを禁止します。 COM 相互運用ツールでは、通常この属性が適用されます。 |
|
COM から使用するためにアセンブリを登録するときに、メソッドが呼び出されるようにします。これによって、登録処理中にユーザー作成コードを実行できます。 |
|
クラスのイベントの発生元になるインターフェイスを識別します。 COM 相互運用ツールでは、この属性を適用できます。 |
|
アセンブリが COM から登録解除されるときメソッドが呼び出されるようにして、登録解除処理中にユーザー作成コードを実行できるようにします。 |
|
この属性の値を false に設定すると、型を COM から参照できなくなります。 この属性は、COM の参照可能範囲を制御するために、個別の型またはアセンブリ全体に適用できます。 既定では、すべてのパブリックなマネージ型は参照可能なので、この属性を使ってこれらの型を参照可能にする必要はありません。 |
|
メソッドまたはフィールドの COM ディスパッチ識別子 (DISPID: Dispatch Identifier) を指定します。 この属性には、対象のメソッド、フィールド、またはプロパティの DISPID が含まれています。 COM 相互運用ツールでは、この属性を適用できます。 |
|
StructLayoutAttribute と共に使用すると、クラス内の各フィールドの物理的位置を示します。さらに、LayoutKind が Explicit に設定されます。 |
|
クラス、インターフェイス、またはタイプ ライブラリ全体のグローバル一意識別子 (GUID: Globally Unique Identifier) を指定します。 この属性に渡す文字列は、System.Guid 型の受け入れ可能なコンストラクターの引数の形式であることが必要です。 COM 相互運用ツールでは、この属性を適用できます。 |
|
COM にデュアル インターフェイスやディスパッチ インターフェイスを公開するときに、共通言語ランタイムで使用する IDispatch インターフェイスの実装の種類を示します。 |
|
呼び出し元に対してデータをマーシャリングして渡すことを示します。 属性パラメーターに対して使用できます。 |
|
マネージ インターフェイスを COM クライアントに公開する方法を制御します (デュアル、IUnknown ベース、または IDispatch 限定のいずれか)。 COM 相互運用ツールでは、この属性を適用できます。 |
|
アンマネージ メソッド シグネチャが LCID パラメーターを期待していることを示します。 COM 相互運用ツールでは、この属性を適用できます。 |
|
マネージ コードとアンマネージ コードとの間で、フィールドまたはパラメーター内のデータをマーシャリングする方法を示します。 各データ型には既定のマーシャリング動作があるため、この属性は常に省略できます。 COM 相互運用ツールでは、この属性を適用できます。 |
|
パラメーターが省略可能であることを示します。 COM 相互運用ツールでは、この属性を適用できます。 |
|
フィールドまたはパラメーター内のデータが、呼び出されたオブジェクトから呼び出し元に返されるときに、マーシャリングされる必要のあることを示します。 |
|
通常は相互運用呼び出しのときに発生する、HRESULT または retval シグネチャ変換を抑止します。 この属性は、タイプ ライブラリのエクスポートだけでなく、マーシャリングにも影響します。 COM 相互運用ツールでは、この属性を適用できます。 |
|
.NET Framework クラスの ProgID を指定します。 属性クラスに対して使用できます。 |
|
クラスのフィールドの物理レイアウトを制御します。 COM 相互運用ツールでは、この属性を適用できます。 |
変換ツールの属性
変換処理中に COM 相互運用ツールが適用する属性の説明を次の表に示します。 これらの属性は、デザイン時には適用しません。
属性 |
説明 |
---|---|
パラメーターまたはフィールド型の COM エイリアスを示します。 属性パラメーター、フィールド、または戻り値に対して使用できます。 |
|
クラスまたはインターフェイスに関する情報が、タイプ ライブラリからアセンブリにインポートされるときに失われたことを示します。 |
|
ソース インターフェイスと、イベント インターフェイスのメソッドを実装するクラスを識別します。 |
|
アセンブリが元は COM タイプ ライブラリからインポートされたことを示します。 この属性は、元のタイプ ライブラリのタイプ ライブラリ定義を含んでいます。 |
|
元はこの関数のために COM タイプ ライブラリからインポートされた FUNCFLAGS を含んでいます。 |
|
元はこの型のために COM タイプ ライブラリからインポートされた TYPEFLAGS を含んでいます。 |
|
元はこの変数のために COM タイプ ライブラリからインポートされた VARFLAGS を含んでいます。 |
参照
参照
System.Runtime.InteropServices