Sobes.tech
Junior — Middle

Puoi spiegare cosa si intende con il concetto di interceptor nella programmazione?

sobes.tech AI

Risposta dell'AI

Interceptor (intercettore) è un pattern di programmazione che consente di intercettare le chiamate ai metodi o l'elaborazione dei messaggi per aggiungere logica aggiuntiva senza modificare il codice principale.

In C#, l'intercettore viene spesso utilizzato nel contesto della programmazione orientata agli aspetti (AOP) o quando si lavora con oggetti proxy. Ad esempio, è possibile intercettare le chiamate ai metodi per il logging, il controllo delle autorizzazioni, la memorizzazione nella cache o la gestione delle eccezioni.

Esempio di utilizzo di un intercettore con Castle DynamicProxy:

public class LoggingInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine($"Chiamata al metodo {invocation.Method.Name} iniziata");
        invocation.Proceed(); // chiamata al metodo originale
        Console.WriteLine($"Chiamata al metodo {invocation.Method.Name} terminata");
    }
}

// Creazione di un proxy con intercettore
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());

myService.SomeMethod();

In questo modo, l'intercettore consente di inserire comportamenti aggiuntivi attorno alle chiamate ai metodi senza modificarne l'implementazione.