Junior — Middle
Мо метавонед шарҳ диҳед, ки дар барномасозӣ чӣ маъно дорад концепсияи interceptor?
sobes.tech AI
Ҷавоб аз AI
Интерцептор (арайга салгич) — программалаштиришда ишлатиладиган шаблон бўлиб, у методлар чақиришларини ёки хабарларни қайта ишлашни ёпишга ва қўшимча логика қўшишга имкон беради, асосий кодни ўзгартирмай.
C#да, интерцептор кўпинча аспектга йўналтирилган программалаш (AOP) контекстида ёки прокси объектлар билан ишлашда қўлланилади. Масалан, метод чақиришларини логлаш, ҳуқуқларни текшириш, кешлаш ёки истисноларни бошқариш учун ёпиш мумкин.
Castle DynamicProxy билан интерцептордан фойдаланиш намунаси:
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();
Шу тарзда, интерцептор метод чақиришлари атрофида қўшимча ҳаракатларни киритиш имконини беради, бу уларнинг амалга оширилишини ўзгартирмай.