Junior — Middle
El tudná magyarázni, hogy mit értünk interceptor fogalma alatt a programozásban?
sobes.tech MI
Válasz az MI-től
Interceptor (közbeavatkozó) egy programozási minta, amely lehetővé teszi a metódushívások vagy üzenetfeldolgozás elfogását, hogy további logikát adjunk hozzá anélkül, hogy megváltoztatnánk a fő kódot.
C#-ban az interceptor gyakran az aspektusorientált programozás (AOP) kontextusában vagy proxy-objektumokkal való munkánál használatos. Például, hívásokat lehet elfogni naplózás, jogosultság-ellenőrzés, gyorsítótárazás vagy kivételkezelés céljából.
Példa Castle DynamicProxy-vel készült interceptor használatára:
public class LoggingInterceptor : IInterceptor
{
public void Intercept(IInvocation invocation)
{
Console.WriteLine($"A {invocation.Method.Name} metódus hívása megkezdődött");
invocation.Proceed(); // eredeti metódus hívása
Console.WriteLine($"A {invocation.Method.Name} metódus hívása befejeződött");
}
}
// Proxy és interceptor létrehozása
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());
myService.SomeMethod();
Így az interceptor lehetővé teszi, hogy további viselkedést szúrjunk be a metódushívások köré anélkül, hogy módosítanánk azok implementációját.