Junior — Middle
Kunt u uitleggen wat het concept van interceptor in programmeren inhoudt?
sobes.tech AI
Antwoord van AI
Interceptor (interceptor) is een programmeerpatroon dat het mogelijk maakt om methodenaanroepen of berichtverwerking te onderscheppen om extra logica toe te voegen zonder de hoofdcode te wijzigen.
In C# wordt de interceptor vaak gebruikt in de context van aspectgeoriënteerd programmeren (AOP) of bij het werken met proxy-objecten. Bijvoorbeeld, methodenaanroepen kunnen worden onderschept voor logging, toegangscontrole, caching of foutafhandeling.
Voorbeeld van het gebruik van een interceptor met Castle DynamicProxy:
public class LoggingInterceptor : IInterceptor
{
public void Intercept(IInvocation invocation)
{
Console.WriteLine($"Aanroep van methode {invocation.Method.Name} gestart");
invocation.Proceed(); // originele methode aanroepen
Console.WriteLine($"Aanroep van methode {invocation.Method.Name} voltooid");
}
}
// Proxy met interceptor maken
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());
myService.SomeMethod();
Op deze manier maakt de interceptor het mogelijk om extra gedrag toe te voegen rondom methodenaanroepen zonder de implementatie ervan te wijzigen.