CSharp Cheat sheet

Tu guía rápida para programar en C#

Programación Orientada a Aspectos (AOP) en C#

La Programación Orientada a Aspectos (AOP) es un paradigma que permite separar las preocupaciones transversales (cross-cutting concerns) del código principal de negocio. En C#, aunque no está integrado de forma nativa como en otros lenguajes, puedes implementarlo con herramientas, frameworks (como Castle Windsor, Autofac, Scrutor) y técnicas como interceptores, atributos y proxies dinámicos.

¿Qué es una preocupación transversal?

Son funcionalidades que se repiten en varios lugares del código como logging, validación, caching, manejo de excepciones o seguridad. Sin AOP, estas lógicas suelen dispersarse por toda la aplicación, dificultando el mantenimiento.

Ejemplo básico con atributos

Puedes definir atributos personalizados para marcar métodos que requieren lógica adicional.

[AttributeUsage(AttributeTargets.Method)]
public class LogAttribute : Attribute { }
    

Aunque el atributo por sí solo no ejecuta lógica, sirve para identificar puntos de extensión.

Uso con interceptores

Frameworks como Castle Windsor permiten interceptar métodos marcados con atributos.

// Ejemplo conceptual
public class LoggingInterceptor : IInterceptor {
    public void Intercept(IInvocation invocation) {
        Console.WriteLine($"Entrando a {invocation.Method.Name}");
        invocation.Proceed();
        Console.WriteLine($"Saliendo de {invocation.Method.Name}");
    }
}
    

Así puedes aplicar logging automáticamente sin mezclarlo con la lógica de negocio.

Buenas Prácticas

Identifica claramente las preocupaciones transversales. Usa AOP para evitar duplicar código de infraestructura. Evita abusar de interceptores para no dificultar el debug. Mantén la lógica de negocio separada y enfocada. Documenta bien el uso de atributos y proxies para que el equipo los comprenda.

Ver también

Documentación oficial de Microsoft

Ver más en Microsoft Docs