Sobes.tech
Junior — Middle

Ar galite paaiškinti, ką reiškia interceptor sąvoka programavime?

sobes.tech AI

Atsakymas iš AI

Interceptors (įsikišėjai) yra programavimo šablonas, leidžiantis perimti metodų iškvietimus arba žinučių apdorojimą, pridėti papildomą logiką be pagrindinio kodo keitimo.

C# kalboje, interceptoriai dažnai naudojami aspektų orientuoto programavimo (AOP) kontekste arba dirbant su proxy objektais. Pavyzdžiui, galima perimti metodų iškvietimus logavimui, prieigos teisių tikrinimui, talpyklos naudojimui ar išimčių tvarkymui.

Pavyzdys, kaip naudoti interceptorį su Castle DynamicProxy:

public class LoggingInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine($"{invocation.Method.Name} metodo iškvietimas pradėtas");
        invocation.Proceed(); // originalaus metodo iškvietimas
        Console.WriteLine($"{invocation.Method.Name} metodo iškvietimas baigtas");
    }
}

// Proxy ir interceptor sukūrimas
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());

myService.SomeMethod();

Taip, interceptorius leidžia įterpti papildomą elgesį aplink metodų iškvietimus, nekeičiant jų įgyvendinimo.