属性を使用したメタデータの拡張
C++ の経験がある場合は、クラス メンバーについての追加情報を指定する public や private などのキーワードを含む宣言について、既にご存知であると思います。 これらのキーワードは、ほかのクラスへのアクセシビリティを記述して、クラス メンバーの動作をさらに詳しく定義します。 コンパイラは定義済みのキーワードを認識するように明示的にデザインされていたため、以前は独自のキーワードを作成することがありませんでした。 しかし、共通言語ランタイムでは、属性と呼ばれるキーワードに似た記述的な宣言を追加して、型、フィールド、メソッド、プロパティなどのプログラミング要素に注釈を付けることができます。
ランタイム用にコードをコンパイルすると、コードは Microsoft Intermediate Language (MSIL) に変換され、コンパイラによって生成されるメタデータと共に、ポータブル実行可能 (PE) ファイルに格納されます。 属性を使用すると、ランタイム リフレクション サービスで抽出できる記述的な情報をメタデータに追加できます。 属性は、System.Attribute から派生する特殊なクラスのインスタンスを宣言するときに、コンパイラによって作成されます。
.NET Framework では、属性がさまざまな理由と目的で使用されます。 属性を使用して、データをシリアル化する方法を記述したり、セキュリティの適用に使用する特性を指定したりします。また、コードをデバッグしやすい状態に保つためにジャスト イン タイム (JIT) コンパイラによる最適化を制限する場合も、属性を使用します。 さらに、ファイル名やコードの作成者の記録、およびフォームの開発時にコントロールやメンバーを表示するかどうかの制御も、属性で指定します。
属性を使用すると、事実上何の制限もなしにコードを記述し、新しい方法で実行時の動作を指定できます。 属性を使用すると、ユーザーが独自に記述する要素を、C#、Visual C++、Microsoft Visual Basic 2005 のほか、ランタイムに対応するすべての言語に、コンパイラを再使用せずに追加できます。
関連トピック
タイトル |
説明 |
---|---|
コードの要素に属性を適用する方法を説明します。 |
|
カスタム属性クラスをデザインする方法を説明します。 |
|
実行コンテキストに読み込まれるコードのカスタム属性を取得する方法を説明します。 |
|
メタデータの概要と、.NET Framework のポータブル実行可能 (PE) ファイル内でメタデータがどのように実装されるかを説明します。 |
|
リフレクションのみのコンテキストでカスタム属性情報を取得する方法を説明します。 |