GoF patterns implemented with AOP PostSharp