Назначение перехватчиков C# 12

В C# 12 появятся перехватчики, которые позволят вам перехватывать вызов метода, но какой в ​​этом смысл? Почему бы мне просто не вызвать другой метод?

И зачем мне вообще его использовать — синтаксис кажется неудобным для разработчиков? Спасибо

1 ответ

Почему бы мне просто не вызвать другой метод?

Подтверждая ответ @dragon: типичный вариант использования здесь — разрешить генераторам, которые переписывают ваш код во время сборки, выражать то же намерение, но AOT-совместимым способом. Пример, на который я здесь опираюсь (поскольку я предвзят), — это «Dapper»: Dapper — это библиотека доступа к данным, которая использует отражение и IL-emit для генерации кода во время выполнения , который выполняет такие вещи, как привязка параметров ADO.NET и анализ строк. Это работает, но на 100% несовместимо с AOT и обрезкой. Ведется работа над реализацией Dapper на основе генератора, которая принимает существующий код Dapper , но использует перехватчики для замены ваших вызовов на такие вещи, как.Query<Customer>(...), используя эквивалентные реализации, но теперь совместимые с AOT и обрезкой - без каких-либо изменений в существующем коде.

синтаксис не кажется дружественным для разработчиков?

Это не обязательно; не предполагается, что кто-то будет излучать перехватчики напрямую или вручную, но всегда генераторами.

Другие вопросы по тегам