C# 12 拦截器的用途

-1 .net c# .net-8.0 c#-12.0

C# 12 将引入拦截器,它允许您拦截对方法的调用,但这有什么意义呢?为什么我不首先调用另一个方法呢?

为什么我想使用一个 - 语法似乎对开发人员不友好?谢谢

Mar*_*ell 5

为什么我不首先调用另一个方法呢?

回应 @dragon 的答案:这里的典型用例是允许生成器在构建时重写代码,以表达相同的意图,但以 AOT 兼容的方式。我在这里引用的例子(因为我有偏见)是“Dapper”:Dapper 是一个数据访问库,它使用反射和 IL-emit在运行时生成代码,执行 ADO.NET 参数绑定和行解析等操作。这可行,但与 AOT 和修剪 100% 不兼容。基于生成器的 Dapper 实现正在进行中,它采用现有的 Dapper 代码,但使用拦截器来替换对诸如 之类的调用.Query<Customer>(...),使用等效的实现,但现在是 AOT 和修剪友好的 - 无需对现有代码进行任何更改。

语法似乎对开发人员不友好?

不一定是这样;预计不会有人直接或手动发射拦截器,而总是通过发生器发射拦截器。