In this chapter, we learned how we can use system attributes, create custom attributes, retrieve attributes, and then use them in our application logic. Using reflection to retrieve attribute information, we also looked at how we can create types, access properties, and invoke a method.
In the next chapter, we will gain an understanding of why is it important to validate application input, the type of information that flows into our application, and how can we handle it.