首页 > 作文

.Net 6简介并和之前版本写法做对比

更新时间:2023-04-04 05:08:32 阅读: 评论:0

介绍

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个版本的语法对比来看

向di 容器添加服务

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();

rilog 集成

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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图