This chapter described what attributes are and discussed some of the attributes defined within the Framework. There are many more attribute classes within the Framework, and the best way to find out what they are used for is to take a look through the .NET Framework SDK documentation.
In this chapter, you learned about the following attribute-related topics:
Using the Conditional attribute to exclude debugging code from release mode binaries
Using the Obsolete attribute to revise libraries over time
How serialization uses attributes to specify what should and what should not be serialized
How to delay-sign an assembly
How to create custom attributes
Attributes are a powerful way to add extra, out-of-band information into your assemblies. You can create your own attributes to add extra information to your classes as appropriate. This chapter described how to create a TestCase attribute, which could be used to link your code to the test cases that exercise that code. There are many other uses of attributes — I encourage you to look into the Framework for other attribute classes.
the next chapter discusses one of the most onerous tasks a developer generally has to face — that of creating documentation. It's often an afterthought, but .NET makes this process much easier and integrates the comments into the code, so there's no excuse for letting the documentation lag behind the code since they can both be generated together.