vs2022正式版已经推出了,估计很多人已经下载并开始创建.net 6 开始尝鲜了, 本节我简要的给大家介绍一下.net 6的一些改动。
本次.net6带来最明显的变化就是:
采用顶级语句,我们看不到program.main()
了。隐式 using 指令,隐式 using 指令意味着编译器会根据项目类型自动添加一组 using 指令。移除了startup文件。var builder = webapplication.createbuilder(args);var app = builder.build();app.run();
对于这样的改动大家可能会觉得这是c# 10 带来的优化,但我的理解是.net6为了新手更加方便入门,早期我们使用.net core 2/3/5 版本,还要给新人解释系统启动入口program.main()
以后不需要了,配置拆分成两个文件program.cs和startup.cs虽然做到了关注点分离,但是对于新人会难以理解这次也没了,当我们讨论startup的时候不用在去解释如何调用的2个约定方法,即使它们没有显式实现接口,也可以调用它们。
我们来看一下之前的语法,我们有一大堆嵌套的 lambda,代码看上去非常复杂。
var hostbuilder = host.createdefaultbuilder(args) .configurervices(rvices => { rvices.addcontrollers(); }) .configurewebhostdefaults(webbuilder => { webbuilder.configure((ctx, app) => { if (ctx.hostingenvironment.isdevelopment()) { app.udeveloperexceptionpage(); } app.ustaticfiles(); app.urouting(); app.uendpoints(endpoints => { endpoints.mapget("/", () => "hello world!"); endpoints.maprazorpages(); }); }); }); hostbuilder.build().run();
升级到.net 6之后,我们可以使用更简单的 api 来实现。
var builder = webapplication.createbuilder(args);builder.rvices.addcontrollers();var app = builder.build();app.mapget("/", () => "hello world!");app.run();
我们将 2个版本的语法对比来看
var hostbuilder = host.createdefaultbuilder(args);hostbuilder.configurervices(rvices => { rvices.addcontrollers(); rvices.addsingleton<mythingy>(); })var builder = webapplication.createbuilder(args);builder.rvices.add写的英文单词controllers();builder.rvices.addsingleton<mythingy>();
var hostbuilder = host.createdefaultbuilder(args);hostbuilder.configurelogging(builder => { builder.addfile(); }有板有眼)var builder = webapplication.createbuilder(args);builder.logging.addfile();
public static ihostbuilder createhostbuilder(string[] args) => host.createdefaultbuilder(args) .urilog() // <-- add this line .configurewebhostdefaults(webbuilder => { webbuilder.ustartup<startup>(); });builder.host.urilog();
public interface ihellg常用对数表lorvice { string hello(bool ishappy); } public class hellorvice : ihellorvice { public string hello(bool ishappy) { var hello = $"hello world"; if (ishappy) return $"{hello}, you em to be happy today"; return hello; } }using minimalapidemo;using system.curity.claims;var builder = webapplication.createbuilder(args);builder.rvices.addscoped<ihellorvice, hellorvice>();// add rvices to the container.builder.rvices.addcont如何训练口才rollers();// learn more about configuring swagger/openapi at /d/file/titlepic/swashbucklebuilder.rvices.addendpointsapiexplorer();builder.rvices app = builder.build();// configure the http request pipeline.if (app.environment.isdevelopment()){ app.uswagger(); app.uswaggerui();}app.uhttpsredirection();app.uauthorization();app.mapcontrollers();app.mapget("/hello", (bool? ishappy, ihellorvice rvice) =>{ if (ishappy is null) return results.badrequest("plea tell if you are happy or not :-)"); return results.ok(课本剧皇帝的新装rvice.hello((bool)ishappy));});app.run();
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 05:08:29,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/d4bd3be105f6c1947dd666b7d5afe58f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:.Net 6简介并和之前版本写法做对比.doc
本文 PDF 下载地址:.Net 6简介并和之前版本写法做对比.pdf
留言与评论(共有 0 条评论) |