メタデータ (共通言語基盤)
開発者はコードに属性という形でメタデータを付加することができる。属性にはカスタム属性と擬似カスタム属性の二種類があり、それらは同じ文法で記述される。コードに属性を記述するとコンパイラはメタデータを生成する。擬似カスタム属性とはCLRが認識できるような属性である。例えば[Serializable](クラスのインスタンスがシリアライズ可能であることを示す属性)などがある。C#では次のように記述する。
(擬似でない)カスタム属性が指定されると、コンパイラはCLRによって認識されないカスタムメタデータを生成する。開発者は、そのメタデータを読み取って処理をするコードを記述する必要がある。例えば、Visual Studioのプロパティウインドウではオブジェクトのプロパティがカテゴリで分類されている。これは、[Category]カスタム属性を指定することによって行われている。この例はCLRではなくアプリケーション(プロパティウインドウ)が属性を解釈している。