Sobes.tech
Junior — Middle

Можете ли да обясните какво означава концепцията за интерцептор в програмирането?

sobes.tech AI

Отговор от AI

Interceptor (прекъсвач) е шаблон за програмиране, който позволява прихващане на извиквания на методи или обработка на съобщения за добавяне на допълнителна логика без промяна на основния код.

В C# interceptor често се използва в контекста на аспектно-ориентираното програмиране (AOP) или при работа с прокси обекти. Например, може да прихваща извиквания на методи за логване, проверка на права за достъп, кеширане или обработка на изключения.

Пример за използване на interceptor с Castle DynamicProxy:

public class LoggingInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine($"Начало на извикване на метода {invocation.Method.Name}");
        invocation.Proceed(); // извикване на оригиналния метод
        Console.WriteLine($"Край на извикване на метода {invocation.Method.Name}");
    }
}

// Създаване на прокси с interceptor
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());

myService.SomeMethod();

По този начин, interceptor позволява внедряване на допълнително поведение около извикванията на методи без да се променя тяхната реализация.