Sobes.tech
Junior — Middle

Pouvez-vous expliquer ce que l'on entend par concept d'intercepteur en programmation?

sobes.tech IA

Réponse de l'IA

Interceptor (intercepteur) est un patron de programmation qui permet d’intercepter les appels de méthodes ou le traitement de messages pour ajouter une logique supplémentaire sans modifier le code principal.

En C#, l’intercepteur est souvent utilisé dans le contexte de la programmation orientée aspect (AOP) ou lors de l’utilisation d’objets proxy. Par exemple, on peut intercepter des appels de méthodes pour la journalisation, la vérification des droits d’accès, la mise en cache ou la gestion des exceptions.

Exemple d’utilisation d’un interceptor avec Castle DynamicProxy:

public class LoggingInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine($"Appel de la méthode {invocation.Method.Name} commencé");
        invocation.Proceed(); // appel de la méthode originale
        Console.WriteLine($"Appel de la méthode {invocation.Method.Name} terminé");
    }
}

// Création d’un proxy avec interceptor
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());

myService.SomeMethod();

Ainsi, l’intercepteur permet d’introduire un comportement supplémentaire autour des appels de méthodes sans en modifier l’implémentation.