相互運用固有の属性の適用
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 が含まれます。 |
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET