Sobes.tech
Junior — Middle

Puteți explica ce înseamnă conceptul de interceptor în programare?

sobes.tech AI

Răspuns de la AI

Interceptor (interceptor) este un pattern de programare care permite interceptarea apelurilor de metode sau procesarea mesajelor pentru a adăuga logică suplimentară fără a modifica codul principal.

În C#, interceptorul este adesea utilizat în contextul programării orientate pe aspecte (AOP) sau atunci când se lucrează cu obiecte proxy. De exemplu, se pot intercepta apelurile de metode pentru logare, verificarea permisiunilor, caching sau gestionarea excepțiilor.

Exemplu de utilizare a interceptorului cu Castle DynamicProxy:

public class LoggingInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine($"Apelarea metodei {invocation.Method.Name} a început");
        invocation.Proceed(); // apelul metodei originale
        Console.WriteLine($"Apelarea metodei {invocation.Method.Name} s-a încheiat");
    }
}

// Crearea unui proxy cu interceptor
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());

myService.SomeMethod();

Astfel, interceptorul permite introducerea unui comportament suplimentar în jurul apelurilor de metode fără a modifica implementarea acestora.