百业网免费发布信息,优化课程设置,室内设计公司图片,白云区专业网站建设文章目录 前言Blazor 依赖注入依赖注入用于解决什么问题#xff1f;依赖注入的生命周期。测试代码 总结 前言
Blazor 具有前后端不分离模式#xff0c;但是如何直接调用需要一定的设置
Blazor 依赖注入
依赖注入在spring里面很常见#xff0c;毕竟.NET 是个巨型融合怪。只… 文章目录 前言Blazor 依赖注入依赖注入用于解决什么问题依赖注入的生命周期。测试代码 总结 前言
Blazor 具有前后端不分离模式但是如何直接调用需要一定的设置
Blazor 依赖注入
依赖注入在spring里面很常见毕竟.NET 是个巨型融合怪。只要你这个好用我就抄。我还是很佩服的能实现就行谁管是谁第一个开发的。MVVM还是WPF首创的呢Vue用也没关系。能简化程序员逻辑就行。
依赖注入用于解决什么问题
依赖注入解决了两个问题
代码解耦 使用先存后拿的形式我们使用的时候直接拿依赖对象不需要知道依赖对象是怎么来的。 生命周期 如果解耦问题只是为了程序写起来舒不舒服。那么生命周期就是代码的功能问题。
下面重点讲解生命周期
依赖注入的生命周期。
微软官方文档 依赖注入生命周期 asp.net core 依赖注入 AddSingleton的生命周期 项目启动-项目关闭 相当于静态类 只会有一个 AddScoped的生命周期 请求开始-请求结束 在这次请求中获取的对象都是同一个 AddTransient的生命周期 请求获取-GC回收-主动释放 每一次获取的对象都不是同一个
根据我实际测试得到如下结果。
Singleton单列 生命周期程序程序启动时注册程序结束时销毁一般不用因为每个网页共用的情况很少 Scoped范围 生命周期网页网页打开时注册网页刷新时销毁两个相同地址的网页依赖对象互补干扰即每个网页对象唯一使用频率最高和浏览器缓存搭配使用相当于全局静态变量 Transient瞬时 生命周期路由路由不动时存在路由移动时销毁即从index/a 调到index/b再跳回index/a就销毁了。使用频率较低相当于临时变量不如直接声明临时变量。
那么根据实际情况我们还需要加一个。生命周期浏览器。那么就要用到浏览器缓存了。因为我们不希望用户一刷新网页就跳到登录页面了还是要和浏览器绑定。
行为算不算网页刷新刷新网页算页面点击的路由跳转不算在网页手动输入的页面跳转算
测试代码
服务类 public class TestModel{public int count { get; set; } 0;public int AddCount(){count;return count;}}Blazor点击网页
using BlazorApp2.Data
inject TestModel TestServicePageTitleCounter/PageTitleh1Counter/h1p rolestatusCurrent count: currentCount/p
pStatic count : StaticCount /pbutton classbtn btn-primary onclickIncrementCountClick me/buttoncode {private int currentCount 0;private int StaticCount 0;private void IncrementCount(){currentCount;StaticCount TestService.AddCount();//Console.WriteLine(打印currentCount);}
}
在App.razor里面注册 builder.Services.AddSingletonTestModel();builder.Services.AddScopedTestModel();builder.Services.AddTransientTestModel();总结
一般来说大部分时候都是Scoped(范围)来绑定整个页面再用Cookie让登录不登出页面。