Home   Cover Cover Cover Cover
 

Metadata

Example "Attributes"

With the CLR it is possible to make certain characteristics of program elements visible in the metadata by applying attributes to them in the source code. Other programs and tools can then access and evaluate these attributes at runtime.
In the example we define a class OurBook and mark it as serializable with the System.SerializableAttribute from the .NET class library. The class also contains a field ourPrice with the custom attribute TooLowAttribute.

Attributes.cs
using System;

[Serializable]
class OurBook {

  [TooLow]
  int ourPrice;

}

class TooLowAttribute : Attribute { }

With the IL disassembler (ildasm.exe) we can not only look at the generated CIL code, but also at the metadata of the class OurBook and its components.





Here we see that for some attributes from the class library the CIL has reserved keywords (serializable), while custom attibutes are usually provided as calls to the corresponding constructor (.ctor) after the keyword .custom.