❤15👍8🔥7
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17🔥6👍3👎1
Интерсепторы: ловим вызов метода до его выполнения — без сторонних библиотек!
Иногда нужно логировать вызовы, проверять аргументы или внедрять кросс-срезовые фичи в одном месте — вместо разбросанных
Подключаем нужные пространства имён и объявляем универсальный интерсептор на основе
Теперь создаём прокси для вашего сервиса и вызываем метод через интерсептор:
🔥 Получаем логирование каждого вызова без сторонних AOP-библиотек — только .NET Core в комплекте!
➡ C# Ready | #практика
Иногда нужно логировать вызовы, проверять аргументы или внедрять кросс-срезовые фичи в одном месте — вместо разбросанных
Console.WriteLine по всему коду.Подключаем нужные пространства имён и объявляем универсальный интерсептор на основе
DispatchProxy:using System;
using System.Reflection;
public class LoggingInterceptor<T> : DispatchProxy
{
public T Target { get; set; }
protected override object Invoke(MethodInfo method, object[] args)
{
Console.WriteLine($"➡️ Вызов метода: {method.Name}");
return method.Invoke(Target, args);
}
}
Теперь создаём прокси для вашего сервиса и вызываем метод через интерсептор:
// Предположим, есть интерфейс IMyService и класс MyService
IMyService real = new MyService();
var proxy = DispatchProxy.Create<IMyService, LoggingInterceptor<IMyService>>();
((LoggingInterceptor<IMyService>)proxy).Target = real;
// Все вызовы пойдут через интерсептор
proxy.DoWork();
🔥 Получаем логирование каждого вызова без сторонних AOP-библиотек — только .NET Core в комплекте!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤6👍4
Простой посредник между объектами: меньше зависимостей, выше стабильность, чище архитектура.
Что важно знать:
• Нет прямых ссылок;
• Подписки управляют жизнью;
• Класс без Unity-зависимостей.
Этот паттерн делает код гибким и избавляет от тормозов сцены.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥9❤4🤝1
Task.WhenAll помогает запускать независимые задачи одновременно и получать результат максимально быстро.Что важно знать:
• Задачи стартуют сразу;
• Итог ждёт всех;
• Ошибки приходят вместе.
Это простой способ ускорить I/O-операции, если между задачами нет зависимости и нужен результат быстрее.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝18❤8🔥6👍4👎1
С выходом C# 11 стали доступны списковые паттерны (
*list patterns*), которые позволяют сопоставлять коллекции по элементам, как с начала, так и с конца — просто, читаемо и без лишних условий.Первое условие проверяет, что массив начинается на
1, 2, заканчивается 10, и содержит что угодно посередине (..).Второе — определяет, что точка находится в первой четверти, если обе координаты больше нуля.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍8🔥3