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

上海网站架设wordpress整站模板

上海网站架设,wordpress整站模板,帝国cms建站系统,免费北京企业名录原文链接#xff1a;https://blazor-university.com/dependency-injection/injecting-dependencies-into-blazor-components/将依赖项注入 Blazor 组件源代码[1]定义我们的依赖在注入依赖之前#xff0c;我们需要创建一个。我们将使用古老的 ToDo 示例#xff0c;但请放心https://blazor-university.com/dependency-injection/injecting-dependencies-into-blazor-components/将依赖项注入 Blazor 组件源代码[1]定义我们的依赖在注入依赖之前我们需要创建一个。我们将使用古老的 ToDo 示例但请放心我们不会创建 ToDo 应用程序。首先创建一个基本的 ToDo 类。public class ToDo {public int Id { get; set; }public string Title { get; set; }public bool Completed { get; set; } }接下来我们将创建 Blazor 页面或组件可能需要的类。在这种情况下它将是一个从服务中检索 ToDo 条目的 API。我们实际上不会调用服务器我们只会返回一些模拟数据。using System.Collections.Generic; using System.Threading.Tasks;namespace BasicDependencyInjection {public interface IToDoApi{TaskIEnumerableToDo GetToDosAsync();}public class ToDoApi : IToDoApi{private readonly IEnumerableToDo Data;public ToDoApi(){Data  new ToDo[]{new ToDo { Id  1, Title  To do 1, Completed  true},new ToDo { Id  2, Title  To do 2, Completed  false},new ToDo { Id  3, Title  To do 3, Completed  false},};}public TaskIEnumerableToDo GetToDosAsync()  Task.FromResult(Data);} }我们通过实现接口抽象了服务。如果我们希望在对我们的类进行单元测试时通过模拟这是一个很好的做法。注册可注入依赖项当 Blazor 应用程序运行其启动代码时它为我们做的一件事就是配置一个依赖注入容器。依赖注入容器负责构建类的实例及其依赖项的实例等。在这个引导过程中我们需要注册我们希望将哪些类作为自动注入依赖项可用。我们可以将一个类本身注册为可注入的如下所示services.AddSingletonToDoApi();或者我们可以将接口注册为可注入的只要我们另外指定实现该接口的类即可。service.AddSingetonIToDoApi, ToDoApi();注意 同样为了使单元测试更简单推荐使用后一种方法。它还允许在配置文件中指定实现类——例如我们可以根据部署的平台是开发/测试/生产来指定不同的 IEmailService。其他注册依赖的模式是// Register an existing object instance services.AddSingleton(existingObject);// Register an existing object instance, injected via an interface services.AddSingletonISomeInterface(implementingInstance);// Lazy created instance, with manual build process and access to the current IServiceProvider services.AddSingletonISomeInterface(serviceProvider  new ImplementingType(.......));Blazor Server 和 Blazor WASM 应用程序中的引导代码并不相同因此尽管服务注册相同但我们必须去注册可注入依赖项的位置略有不同。在 Blazor Server 应用程序中注册注入在 Blazor Server 应用中有一个带有 ConfigureServices 方法的 Startup 类。这是我们应该执行注册的地方。public void ConfigureServices(IServiceCollection services) {... default Blazor registrations omitted ...// Register our own injectablesservices.AddSingletonIToDoApi, ToDoApi(); }当我们在创建应用程序时选中 ASP.NET Core 托管复选框时WASM 应用程序也是如此。这是因为服务器负责引导整个应用程序。在 Blazor WASM 应用程序中注册注入当我们的 Blazor 项目是独立的 WASM 应用程序不是 ASP.NET Core 托管时该应用程序必须有自己的引导程序类。在这种类型的应用程序中类名为 Program引导方法名为 Main——就像在控制台应用程序中一样。public static async Task Main(string[] args) {var builder  WebAssemblyHostBuilder.CreateDefault(args);builder.RootComponents.AddApp(app);builder.Services.AddTransient(sp  new HttpClient { BaseAddress  new Uri(builder.HostEnvironment.BaseAddress) });// Register our own injectablesbuilder.Services.AddSingletonIToDoApi, ToDoApi();await builder.Build().RunAsync(); }注入依赖对于非 Blazor 类例如其他可注入服务可以通过类的构造函数注入依赖项。public class NewsletterService : INewsletterService {private readonly IEmailService EmailService;public NewsletterService(IEmailService emailService){EmailService  emailService;} }但是Blazor 组件并非如此。目前不支持构造函数注入。有两种方法可以指示我们的组件使用哪些依赖项一个在 Razor 标记中一个在 C# 代码中。inject IToDoApi ToDoApi inject ISomeServiceType AnotherServicecode {[Inject]private IYetAnotherServiceType PropertyInjectedDependency { get; set; } }InjectAttribute 只能应用于具有属性设置器的属性属性的封装级别无关紧要。注意 这两种方法是相同的。事实上inject 语法只是 [Inject] 语法的简写。在构建我们的应用程序时Blazor 将首先将 Razor 标记转换为 C# 源代码。要查看 inject 语法是如何转换的请打开文件夹 **\obj\Debug\netcoreapp3.1\Razor ** 并查找与 razor 文件对应的 .cs 文件。使用注入的依赖项在创建 Blazor 组件实例之后和执行 OnInitialized 或 OnInitializedAsync 生命周期事件之前注入依赖项。这意味着我们不能覆盖组件的构造函数并从那里使用这些依赖项但我们可以在 OnInitialized* 方法中使用它们。要使用我们的 IToDoApi 服务我们只需使用 inject 语法将其注入 Index 页面然后在页面初始化时调用它。page / inject IToDoApi ToDoApih1To do/h1 if (Data.Any()) {table classtabletheadtrthId/ththTitle/ththCompleted/th/tr/theadtbodyforeach (ToDo item in Data){trtditem.Id/tdtditem.Title/tdtditem.Completed/td/tr}/tbody/table }code {private IEnumerableToDo Data  Array.EmptyToDo();protected override async Task OnInitializedAsync(){await base.OnInitializedAsync();Data  await ToDoApi.GetToDosAsync();} }第 2 行IToDoApp 的实例被注入到我们的页面中我们使用名称 ToDoApi 来引用注入的依赖项。第 35 行在注入的服务上调用 GetDoToAsync 方法。等待该方法并将结果存储在 Data 中。第 16-23 行Data 中的项目使用 foreach 循环进行迭代并将输出呈现为我们视图的一部分。参考资料[1]源代码: https://github.com/mrpmorris/blazor-university/tree/master/src/DependencyInjection/BasicDependencyInjection
http://www.yutouwan.com/news/95227/

相关文章:

  • 网站名 注册比较好的app创意想法
  • 永州市开发建设投资有限公司网站WordPress论坛用哪些
  • 招商推广十种方法河北关键词seo排名
  • vs2015网站开发教程肇庆市公共资源交易中心
  • 国外 外贸 网站 源码WordPress重力表单注册
  • 做个产品网站要多少钱定制app开发的流程
  • 黄冈网站官方登录平台域名注册平台的网站怎么做
  • 怎么创建自己的游戏网站衡水网站建设格公司
  • 加强门户网站建设方案云南人才网
  • 企业网站需要多少钱网络规划设计师和系统架构设计师
  • 网站建设功能定位网站推广报告
  • 住房城乡建设网站注册网站多少钱
  • 做网站 先上线再调整营销推广渠道有哪些
  • 搜索不到我的网站学校网站模板 dedecms
  • 岱山建设局网站电商网站模板
  • 电商网站建设培训网站排名如何上升
  • 网站怎么销售推广措施
  • 虚拟主机如何搭建网站小生意创业项目
  • 南京市网站建设公司兰州网站建设100
  • 建设销售网站外贸网站建站那家公司好
  • 公司商标设计图案logoseo顾问招聘
  • 现代网站开发设计报告php网站开发专业背景
  • 知名的网站设计公司南通购物网站建设
  • 网站开发框架文档小的外贸公司值得去吗
  • wordpress 我爱水煮鱼做搜狗手机网站优化点
  • asp网站开发参考文献成都住建局官网平台查询
  • 专业网站排名优化公司聊城开发区人才网
  • 主要网站域名织梦网站必须下载地址
  • 西安专业网站建设沈阳男科医院在哪里
  • 学校网站报价方案济南做门户网站开发公司