面向方面编程(AOP)让开发人员可以对多个类运用一些函数,但无须实际修改它们的代码。方面或相关的功能可通过特性或配置文件应用到不同的类。AOP 最早受到 AspectJ 与 Java 编程语言的青睐。从此以后,它为大多数编程语言所应用。
在.NET 方面,如 PostSharp 等 AOP 框架,使用后期生成(post-build)的方式来实现这个功能。这个过程反编译 IL 汇编语言,添加额外的功能,然后再重新编译。此时,我们不得不使用类似 Reflector 这样的工具来查看结果。
PostSharp 2.0 新增了两项重要功能,使得它让 AOP 开发人员更易于理解代码。第一个就是方面浏览器,它可让开发人员选择一个方面并查看所有它所应用到的类。这是通过两个像 Visual Studio 类型查看器一样的树状视图来完成的。
第二项功能则影响了 Visual Studio 代码编辑器。通过把鼠标悬停在类名之上,我们可以看到应用到该类的所有方面,包括基类中的定义。此外,tooltip 信息也可以显示方面的相关定义。
查看英文原文: PostSharp 2.0 Makes Aspect-Oriented Programming Easier with IDE Support
更多内容推荐
35|静态类型检查:ESLint 语法规则和代码风格的检查
linter作为代码检查工具,可以帮助我们将代码出现质量问题的风险降到最低。
2022-12-08
.NET6 新东西 -- 隐式命名空间引用
早在 .NET 6 Preview 7版本中微软就已经引入隐式命名空间引用。在.NET Preview 7这个版本中这个功能是默认开启的,如果需要禁用它的化就需要配置DisableImplicitNamespaceImports来禁用,但是到了.NET6 RC1版本的时候这个功能是禁用的,如果要使用就需要通过
2021-11-17
.NET 无侵入自动化探针原理和主流实现
最近,我在微信公众号和博客园分享了一篇关于 .NET 微服务系统迁移至.NET 6.0 的故事 的文章,引起了许多读者的关注。其中,许多人对基于 OpenTelemetry .NET 的观测指标和无侵入自动化探针颇感兴趣。事实上,我已计划抽出时间,与大家分享这方面的内容。
10 分钟带你彻底搞懂 Spring Cloud Config 配置信息自动更新原理
2022-03-29
三年回顾:JavaScript 与 TypeScript 最新特性汇总
过去三年中发布的最新JavaScript和TypeScript特性,以及如何在项目中使用它们。
微软正式发布 .NET 6 LTS 版本
号称是“迄今为止最快的 .NET”。
C# 8 新提案让泛型 Attribute 成为现实
从一开始, Attribute就是.NET的一部分。尽管理论上CLR支持泛型Attribute,但在实现新提案之前,仍然无法在C#中使用它。
11. 结构型 - 组合模式 Compose
2023-02-15
07|项目代码规范:如何成为一名合格的团队协作工程师?
做项目代码规范,不是为了规范而规范,核心是要提升代码质量,开发项目时,让团队合作更加顺利,让代码可读性更强,让项目维护成本更低,让项目的潜在代码问题变得更少。
2022-12-05
.NET 6 新东西 -- 高性能日志
一提到日志记录,大家就会想到log4net,如果提到.NET中的日志记录,一定会想到ILogger,这个ILogger是.NET中常用的提供的日志记录的方式,下面的代码是.NET Core WebAPI 项目初始化的代码,其中就使用了ILogger来提供日志记录:
2021-12-17
InfoQ 2022 年趋势报告:.NET 篇
在InfoQ,.NET领域包含了所有与.NET直接相关的技术,不仅包含了.NET官方版本的内容,还包括直接影响.NET生态系统的框架和技术、使用.NET的项目和计划、主要用例以及专门针对该领域的方法。
38|编译和打包:通过 Webpack、Babel 做编译和打包
这节课我们来学习JavaScript中编译和打包工具的前世今生和“成功转型”。
2022-12-15
.NET Core 3.0 中的数据库驱动框架 System.Data
System.Data对于.NET中任何关系型数据库的访问都至关重要。因为其前身是ActiveX Data Objects,所以它也被称为ADO.NET。
使用 .NET Core 模板引擎创建自定义的模板和项目
dotnet CLI是实现这些优势功能的入口点,它包含了许多用于创建、编辑、构建和打包 .NET Core项目的不同命令。
C#的未来:简化参数空值验证
人们对于这个特性的争议很大。
Wasmtime:终于可以在.NET 应用中运行 WebAssembly 了
WebAssembly运行时Wasmtime增加对.NET Core的支持,基于.NET Core的应用程序现在可以运行WebAssembly代码了。
加餐 06 | BCC:入门 eBPF 的前端工具
这一讲会带你学习eBPF的一个前端工具——BCC。
2021-02-10
Mono 现状与未来: 从 Xamarin 到 WebAssembly、Blazor 及.NET 5
InfoQ采访了Mono项目的原作者Miguel de Icaza,讨论了Mono的当前状态及其在.NET生态系统中的未来。
微软发布.NET 5.0 RC1,未来将只有一个.NET
微软发布了.NET 5.0 RC1,这是.NET 5在11月正式发布之前的第一个“go-live”版本。
C# 8 将为断言和自动化测试带来 Caller Expression Attribute
根据“Caller Expression Attribute”提案,表达式也将支持Caller Information Attribute。
评论