At this point, you should be familiar with the fundamentals of object-oriented programming and design within the .NET Framework. You've learned about classes, methods, and properties. You've seen inheritance, containment, and polymorphism. You have also tackled structured exception handling.
Hopefully, you have learned not only how to use these constructs but when to use them and why. Whether you know it or not, much of what you have gained is portable to other languages within the .NET Framework and beyond.
Now is the time to take what you learned and push forward. This chapter will discuss a few .NET-centric technologies that will be paramount when you consider architectures for your next big project. They include reflection (which you saw briefly in the last chapter), attributes, streams, and serialization. If you understand these technologies, you will have a solid foundation in programming applications for .NET.