首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏重典.NET

    Metalama简介1. 不止是一个.NET跨平台的编译时AOP框架

    Metalama概览 前面一篇文章介绍到了Metalama: 使用基于Roslyn的编译时AOP框架 - 云+社区 - 腾讯云 (tencent.com) Metalama是一个基于微软编译器Roslyn image.png Metalama两个核心概念 1. Metalama的主要功能 1.编译时代码转换 如上图中红色示例,Metalama可以将重复的代码(例如日志、缓存、INotifyPropertyChanged、多线程、重试机制、或其它有大量重复的代码 IDE支持 Metalama 提供了Vistual Studio插件,当然这个插件不是必须使用的,但是的确可以提高一定效率。 直接在VS中扩展 - 扩展管理中查找Metalama并安装即可。 image.png 点击Show Metalama Diff即可查看编译后的代码。 image.png 引用 Metalama官方文档 Visual Studio 插件

    1.3K51编辑于 2022-04-11
  • 来自专栏重典.NET

    Metalama简介2.利用Aspect在编译时进行消除重复代码

    上文介绍到Aspect是Metalama的核心概念,它本质上是一个编译时的AOP切片。下面我们就来系统说明一下Metalama中的Aspect。 Metalama简介1. 下面我就以几个实际例子,来体现Metalama在复用代码方面的好处。 那么使用Metalama我们如何进行代码改造,去掉复用代码呢。 Attribute,Metalama还提供了其它无入侵的方式来为类或方法添加Aspect,我们将在后面来介绍。 选择使用LamaDebug即可直接对Metalama的项目进行调试。

    891101编辑于 2022-04-12
  • 来自专栏重典.NET

    Metalama简介4.使用Fabric操作项目或命名空间

    Metalama中的Fabric可以做什么 Fabric通过修改项目、命名空间、类型来达到一些效果,这引起修改包括:添加Aspect或添加代码分析 使用Fabric为指定的方法添加Aspect 前文中我们写过一个简单的 下面省去若干方法 } 那么我们可以用Metalama如此实现 using System.Reflection.Emit; using Metalama.Framework.Aspects; using Metalama.Framework.Fabrics; public class AddUtils { private class Fabric : TypeFabric { typeof(int)); } } } } } 引用 本章源代码:https://github.com/chsword/metalama-demo Metalama官方文档: https://doc.metalama.net/ Metalama Nuget包: https://www.nuget.org/packages/Metalama.Framework

    57330编辑于 2022-04-23
  • 来自专栏重典.NET

    Metalama简介3.自定义.NET项目中的代码分析

    Metalama中也提供了代码分析功能。 下面我们以几个示例来演示Metalama中如何使用代码分析。 下面这个示例是要求调用函数的命名空间必须符合以.Tests结尾的规则,否则给出警告 using Metalama.Framework.Aspects; using Metalama.Framework.Code ; using Metalama.Framework.Diagnostics; using Metalama.Framework.Validation; namespace LogWithWarning 引用 本章源代码:https://github.com/chsword/metalama-demo/tree/main/src/LogWithWarning Metalama官方文档:https://doc.metalama.net / Metalama Nuget包: https://www.nuget.org/packages/Metalama.Framework/0.5.8-preview

    40420编辑于 2022-04-14
  • 来自专栏重典.NET

    Metalama简介3.自定义.NET项目中的代码分析

    Metalama中也提供了代码分析功能。 下面我们以几个示例来演示Metalama中如何使用代码分析。 下面这个示例是要求调用函数的命名空间必须符合以.Tests结尾的规则,否则给出警告 using Metalama.Framework.Aspects; using Metalama.Framework.Code ; using Metalama.Framework.Diagnostics; using Metalama.Framework.Validation; namespace LogWithWarning [image.png] 引用 本章源代码:https://github.com/chsword/metalama-demo/tree/main/src/LogWithWarning Metalama官方文档 :https://doc.metalama.net/ Metalama Nuget包: https://www.nuget.org/packages/Metalama.Framework/0.5.8-preview

    66360编辑于 2022-04-13
  • 来自专栏重典.NET

    使用基于Roslyn的编译时AOP框架

    即实现以下流程 image.png 使用Metalama实现以上流程 经过寻找,发现其实已经有框架可以实现我上面说的流程了,也就是在编译时实现代码的插入。 https://www.postsharp.net/metalama 。 通过引用包 https://www.nuget.org/packages/Metalama.Framework, 注意Metalama当前是Preview版本,如果通过可视化Nuget管理器引入,需要注意勾选包含预发行版 dotnet add package Metalama.Framework --version 0.5.7-preview 3.编写一个AOP的Attribute 在项目中引入 Metalama.Framework 官网:https://www.postsharp.net/metalama

    2.4K81编辑于 2022-04-07
  • 来自专栏重典.NET

    Metalama简介5.配合VisualStudio自定义重构或快速操作功能

    使用基于Roslyn的编译时AOP框架来解决.NET项目的代码复用问题 Metalama简介1. 不止是一个.NET跨平台的编译时AOP框架 Metalama简介2.利用Aspect在编译时进行消除重复代码 Metalama简介3.自定义.NET项目中的代码分析 Metalama简介4.使用Fabric Metalama可以通过编写代码的形式,让我们为指定的代码添加重构或快速操作的功能。 则我们可以使用Metalama定义一个LiveTemplate,这样就可以在VS的工具中使用它了。 Metalama官方文档: https://doc.metalama.net/ Metalama Nuget包: https://www.nuget.org/packages/Metalama.Framework

    63250编辑于 2022-05-02
  • 来自专栏重典.NET

    Metalama简介4.使用Fabric操作项目或命名空间

    使用基于Roslyn的编译时AOP框架来解决.NET项目的代码复用问题 Metalama简介1. 不止是一个.NET跨平台的编译时AOP框架 Metalama简介2.利用Aspect在编译时进行消除重复代码 Metalama简介3.自定义.NET项目中的代码分析 Metalama中的Fabric 下面省去若干方法 } 那么我们可以用Metalama如此实现 using System.Reflection.Emit; using Metalama.Framework.Aspects; using Metalama.Framework.Fabrics; public class AddUtils { private class Fabric : TypeFabric { Metalama官方文档: https://doc.metalama.net/ Metalama Nuget包: https://www.nuget.org/packages/Metalama.Framework

    46020编辑于 2022-04-24
  • 来自专栏重典.NET

    Metalama简介2.利用Aspect在编译时进行消除重复代码

    上文介绍到Aspect是Metalama的核心概念,它本质上是一个编译时的AOP切片。下面我们就来系统说明一下Metalama中的Aspect。 Metalama简介1. 下面我就以几个实际例子,来体现Metalama在复用代码方面的好处。 那么使用Metalama我们如何进行代码改造,去掉复用代码呢。 Attribute,Metalama还提供了其它无入侵的方式来为类或方法添加Aspect,我们将在后面来介绍。 选择使用LamaDebug即可直接对Metalama的项目进行调试。

    58430编辑于 2022-04-14
  • 来自专栏DotNet NB && CloudNative

    MVVM中实现 INotifyPropertyChanged 的 4 种方法

    PerimeterDiagonalWidthHeight 方法 2.Metalama 如上一节所述,手动实现可能容易出错且繁琐。在这种情况下,Metalama 可能非常有益。 Metalama 是一种工具,允许您使用 aspects、在编译器或 IDE 中执行的特殊自定义属性来自动化代码库中的重复性任务,并动态转换源代码。 但是,如果您想在这里进行简要概述,请允许我指导您完成它,因为使用 Metalama 有多种实现方法。 这只是 Metalama 在做它的工作。在后台,Metalama 会分析您的代码以跟踪属性之间的所有托管关系。然后,它会动态生成必要的代码来为您实现接口。 Metalama、MVVM Community Toolkit 和 Fody.PropertyChanged 等工具提供了自动实现 的替代解决方案,有助于减少样板代码。

    2.5K10编辑于 2024-11-23
  • 来自专栏InCerry

    .NET周刊【6月第3期 2024-06-23】

    提高生产力的代码风格 - Metalama 团队的提示和工具 | .NET 工具博客 https://blog.jetbrains.com/dotnet/2024/06/18/code-style-for-better-productivity-tips-and-tools-from-the-metalama-team / 介绍Metalama团队在代码风格方面使用的实践和工具。

    2.7K10编辑于 2024-07-04
领券