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.