There is a lot of AOP implementation in C#, VB.net. this is some of AOP Implementations:
- PostSharp
- Castle DynamicProxy
- LinFu
- LOOM.NET
- Aspect.NET
- Enterprise Library 3.0 Policy Injection Application Block
- AspectDNG
- DotSpect (.SPECT)
- The Spring.NET Framework as part of its functionality
- Wicca and Phx.Morph
- An exhaustive analysis on AOSD solutions for .NET is available from Twente University
- Seasar.NET
- Aspect#
- Puzzle.NAspect
- Compose*
- SetPoint
- NConcern .NET AOP Framework
- …
What is the best implementation for AOP in .Net? What I should use?
I think that Castle Dynamic Proxy is the solution of choice if dynamic interception can handle your needs. This framework is used internally by a lot of other frameworks that want to offer AOP capabilities. Typically, most of existing IoC containers now provide some dynamic interception mechanisms (Spring.NET, Castle Windsor, StructureMap, etc.) If you already work with an IoC container, maybe it could be easier to look at what it proposes.
If dynamic interception can’t address your needs (weaving sealed class, intercepting non-virtual call, etc.), then you certainly want static weaving. PostSharp is the reference in this domain.
Note that it also exists Linfu, that can be used to leverage both AOP fashions.