Sobes.tech
Junior — Middle

Programlamada interceptor kavramı nedir açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Interceptor (araya sokucu), metod çağrılarını veya mesaj işleme süreçlerini yakalayarak, ana kodu değiştirmeden ek mantık eklemeye olanak tanıyan bir programlama desenidir.

C#'ta interceptor genellikle yönelimli yönler (AOP) bağlamında veya proxy nesneleriyle çalışırken kullanılır. Örneğin, metod çağrılarını kaydetmek, erişim izinlerini kontrol etmek, önbelleğe almak veya istisnaları işlemek için yakalayabiliriz.

Castle DynamicProxy ile interceptor kullanımına örnek:

public class LoggingInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine($"{invocation.Method.Name} metodu çağrısı başladı");
        invocation.Proceed(); // orijinal metodu çağır
        Console.WriteLine($"{invocation.Method.Name} metodu çağrısı sona erdi");
    }
}

// Proxy ve interceptor oluşturma
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());

myService.SomeMethod();

Bu şekilde, interceptor metod çağrılarının etrafına ek davranışlar enjekte etmenize olanak tanır, kodun ana akışını değiştirmeden.