Sobes.tech
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.