In this chapter, I’ll discuss one of the most innovative features that the Microsoft .NET Framework has to offer: custom attributes. Custom attributes allow anyone (not just Microsoft) to define information that can be applied to almost any metadata table entry. This extensible metadata information can be queried at run time to dynamically alter the way code executes. As you use the various .NET Framework technologies (Windows Forms, Web Forms, XML Web services, and so on), you’ll see that they all take advantage of custom attributes, allowing developers to express their intentions in code very easily. A solid understanding of custom attributes is necessary for any .NET Framework developer.