Before we start learning PostSharp we must understand the idea of Aspect Oriented Programming.
Aspect oriented programming, or “AOP”, is the programming style which allows the separation of distinct, independent functions. This inevitably increases code modularity and in turn drives towards cohesive functionality. We tend to classify these distinct functions as cross-cutting concerns due to the fact that they can “cut across” multiple abstractions in a program. These concerns classify the major parts of a whole application such as the business logic, data model or the user interface. These concerns could be broken down even further if need be. This high level of encapsulation is the central concept behind AOP.