This document discusses aspect-oriented programming (AOP) and how it can be implemented using PostSharp. AOP aims to make cross-cutting concerns like logging and error handling easier to implement separately from business logic. It describes how PostSharp uses IL weaving to modify code at compile time or JIT to add aspects without changing the original code. Alternatives to PostSharp include using the .NET profiler API or proxies, but IL weaving generally has better performance. The document also briefly outlines how AOP may be improved in future versions of C# compilers like Roslyn.