Sobes.tech
Junior — Middle

Бағдарламалауда интерцептор ұғымы не нәрсеге сілтеме жасайтынын түсіндіре аласыз ба?

sobes.tech AI

AI-дан жауап

Interceptor (перехватчик) — бұл бағдарламалау үлгісі, ол әдіс шақыруларын немесе хабарламаларды өңдеуді қосымша логика қосу үшін негізгі кодты өзгеріссіз перехваттауға мүмкіндік береді.

C# тілінде interceptor жиі аспект-бағытталған бағдарламалау (AOP) немесе прокси-объектілермен жұмыс кезінде пайдаланылады. Мысалы, әдіс шақыруларын логтау, рұқсаттарды тексеру, кэштеу немесе қателерді өңдеу үшін перехваттауға болады.

Castle DynamicProxy көмегімен interceptor қолданудың мысалы:

public class LoggingInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine($"{invocation.Method.Name} әдісінің шақыруы басталды");
        invocation.Proceed(); // түпнұсқа әдісті шақыру
        Console.WriteLine($"{invocation.Method.Name} әдісінің шақыруы аяқталды");
    }
}

// Перехватшы бар прокси құру
var proxyGenerator = new ProxyGenerator();
var myService = proxyGenerator.CreateInterfaceProxyWithTarget<IMyService>(new MyService(), new LoggingInterceptor());

myService.SomeMethod();

Осылайша, interceptor әдістердің шақырулары айналасындағы қосымша мінез-құлықты енгізуге мүмкіндік береді, оны іске асыруды өзгеріссіз қалдырады.