当前位置: 首页 > news >正文

局域网的网站建设台州seo服务

局域网的网站建设,台州seo服务,济宁网站建设公司,沈阳室内设计公司排名理想的代码优化方式团队日常协作中#xff0c;自然而然的会出现很多重复代码#xff0c;根据这些代码的种类#xff0c;之前可能会以以下方式处理方式描述应用时可能产生的问题硬编码多数新手#xff0c;或逐渐腐坏的项目会这么干#xff0c;会直接复制之前实现的代码带来… 理想的代码优化方式团队日常协作中自然而然的会出现很多重复代码根据这些代码的种类之前可能会以以下方式处理方式描述应用时可能产生的问题硬编码多数新手或逐渐腐坏的项目会这么干会直接复制之前实现的代码带来的问题显而易见的多例如架构会逐渐随时间被侵蚀例外越来越多提取函数提取成为函数然后复用提取函数然后复用会比直接硬编码好些但是仍然存在大量因“例外”而导致增加参数、增加函数重载的情况模板生成器CodeSmith/T4等因为是独立进程所以对于读取用户代码或项目实现难度较高且需要现有用户项目先生成成功再进行生成 或者是完全基于新项目代码片段VS自带的代码片段功能无法对复杂的环境或条件做出响应AOP框架面向切面编程可以解决很多于用户代码前后增加操作的事情但是大多AOP框架都是基于透明代理形式实现的对于相互调用较多的代码但形成性能压力而且因为要符合透明代理的规则所以要提供相应的子类或接口。基于Rosyln的编译时插入代码但以上这几种AOP算是最理想的方式但是感觉上还可以有更好的解决方案。直到读到了这篇文章 Introducing C# Source Generators文中提供了一种新的解决方案即通过Roslyn的Source Generator在编译时直接读取当前项目中的语法树处理并生成的新代码然后在编译时也使用这些新代码。那么如果可以读取现有代码的语法树通过读取代码中的标记那么在代码生成过程中是否就能直接生成。实现如下效果项目中的源代码 Program.csinternal class Program { [Log] private static int Add( int a, int b ) { return a b; } }自动根据 LogAttribute 自动编译成的代码 Program.g.csinternal class Program { [Log] private static int Add( int a, int b ) { Console.WriteLine(Program.Add(int, int) 开始运行.); int result; result a b; Console.WriteLine(Program.Add(int, int) 结束运行.); return result; } }当然LogAttribute中需要去实现插入代码。然后项目自动使用新生成的Program.g.cs进行编译。这样就实现了基于编译时的AOP。即实现以下流程使用Metalama实现以上流程经过寻找发现其实已经有框架可以实现我上面说的流程了也就是在编译时实现代码的插入。https://www.postsharp.net/metalama 。下面作一个简单示例创建一个.NET6.0的控制台应用我这里命名为LogDemo,其中的入口文件Program.csnamespace LogDemo { public class Program { public static void Main(string[] args) { var r Add(1, 2); Console.WriteLine(r); } // 这里写一个简单的方法一会对这个方法进行代码的插入 private static int Add(int a, int b) { var result a b; Console.WriteLine(Add result); return result; } } }在项目中使用Metalama通过引用包 https://www.nuget.org/packages/Metalama.Framework, 注意Metalama当前是Preview版本如果通过可视化Nuget管理器引入需要注意勾选包含预发行版dotnet add package Metalama.Framework --version 0.5.7-preview编写一个AOP的Attribute在项目中引入 Metalama.Framework后无需多余配置或代码直接编写一个AOP的Attributeusing Metalama.Framework.Aspects;namespace LogDemo { public class Program { public static void Main(string[] args) { var r Add(1, 2); Console.WriteLine(r); } // 在这个方法中使用了下面的Attribute [LogAttribute] private static int Add(int a, int b) { var result a b; Console.WriteLine(Add result); return result; } } // 这里是增加的 Attribute public class LogAttribute : OverrideMethodAspect { public override dynamic? OverrideMethod() { Console.WriteLine(meta.Target.Method.ToDisplayString() 开始运行.); var result meta.Proceed(); Console.WriteLine(meta.Target.Method.ToDisplayString() 结束运行.); return result;} } }执行结果如下Program.Add(int, int) 开始运行. Add3 Program.Add(int, int) 结束运行. 3生成的程序集进行反编译得到的代码如下using Metalama.Framework.Aspects; namespace LogDemo { public class Program { public static void Main(string[] args) { var r Add(1, 2); Console.WriteLine(r); } // 在这个方法中使用了下面的Attribute [LogAttribute] private static int Add(int a, int b) { Console.WriteLine(Program.Add(int, int) 开始运行.); int result_1; var result a b; Console.WriteLine(Add result); result_1 result; Console.WriteLine(Program.Add(int, int) 结束运行.); return result_1; } } #pragma warning disable CS0067 // 这里是增加的 Attribute public class LogAttribute : OverrideMethodAspect { public override dynamic? OverrideMethod() throw new System.NotSupportedException(Compile-time-only code cannot be called at run-time.); } #pragma warning restore CS0067 }总结这样就完全实现了我之前想要的效果当然使用Metalama还可以实现很多能极大地提高生产力的功能它不仅可以对方法进行改写也可以对属性、字段、事件、甚至是类、命名空间进行一些操作 。引用Introducing C# Source Generatorshttps://devblogs.microsoft.com/dotnet/introducing-c-source-generators/Metalama官网https://www.postsharp.net/metalama
http://www.huolong8.cn/news/121206/

相关文章:

  • 网站建设需要懂什么语言做货代的有哪些网站
  • 广州网站开发公司营业执照怎么注销
  • 邢台做移动网站价格网站建设进展推进表
  • 做问卷调查的网站有没有兼职做网站的
  • 青岛网站建设与管理建设电子商务网站期末考试
  • html5网站开发前景企业信息化建设如何帮助客户理解网站流量
  • 网站建设基本情况网站建设怎么建
  • 十堰网站建设多少钱卖狗做网站什么关键词最好
  • 网站栏目设计规划表建筑模板规格尺寸及价格
  • 对网站建设的意见杭州搜索引擎排名
  • 做网站具体流程嘉兴网站建设999 999
  • 凡科建站快车官网网站推广和网络推广
  • 怎么提高网站转化率企业咨询属于什么行业
  • 建设工程信息管理网一键优化是什么意思
  • 推广新产品最好的方法长沙seo顾问
  • 零基础建设网站教程app推广平台
  • 一个完整的网站怎么做公司名字大全2022
  • 学做网站应该看那些书东莞阳光网站官网
  • 网站后台用什么软件做泰兴做网站公司
  • 漫画网站建设教程摄影作品出售网站
  • 建设部网站官网 造价鉴定营销网站竞品分析报告
  • 全网站开发是什么推广计划书怎么写
  • 网站设计与运营网站ico如何修改
  • 建设网站前市场分析厦门做网站公司排名
  • 东莞 网站建设 保健品摄影作品展示网站设计
  • 怎样制作图片网站电子商务网站建设过程
  • 作品集模板网站织梦网站修改首页图片
  • 浩森宇特北京网站建设网站建设原则五大原则
  • 网站广告的优势国内视差网站
  • 国外销售网站做暧网站免费