Brief : Common functionality in Single Responsible classes as Core module and then use them as per different needs. DRYs out code.
Helps cross cutting concerns e.g. logging.
Functionality -> Encapsulation = Aspect(Wrapper + Single Responsible + Decorator Pattern + Open Close ) == Modular component with good OO
Where we can inject / Hoocks
On Start : immediately prior to underlying functionality
On Success : limited to when no exception
On Exit : when function finishes
On Error : when any exception occur in code
How to Attach to existing function ?
generally IoC is used. this way no post compilation - can use IoC configuration.
2. IL Code Weaving
Compile code to dll or EXE and then run through the AOP post processor. Which will inject the code as per hoocks as new dll / exe with aspects attached.
How to make an Interception and how to make aspect using it?
//to do : update