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 позволява внедряване на допълнително поведение около извикванията на методи без да се променя тяхната реализация.