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

网站开发需要学什么语言个人可做网站需要什么材料

网站开发需要学什么语言,个人可做网站需要什么材料,买空间域名做网站,手机模板网站原文链接#xff1a;https://blazor-university.com/dependency-injection/component-scoped-dependencies/owning-multiple-dependencies-the-right-way/拥有多个依赖项#xff1a;正确的方式在上一节[1]中#xff0c;我们看到了将多个拥有的依赖项注入组件的错误方法。本节…原文链接https://blazor-university.com/dependency-injection/component-scoped-dependencies/owning-multiple-dependencies-the-right-way/拥有多个依赖项正确的方式在上一节[1]中我们看到了将多个拥有的依赖项注入组件的错误方法。本节将演示解决问题的正确方法。如前所述OwningComponentBaseT 类组件将创建自己的依赖容器并在该容器中解析 T 的实例因此 T 的实例对于我们的组件是私有的。如果我们需要我们的组件私有地拥有多种依赖类型的实例那么我们必须做更多的工作。为此我们需要使用非泛型 OwningComponentBase 类。与通用版本一样此组件将创建自己的依赖容器该容器将在组件的生命周期内存在。但是它不会为我们实际解析任何依赖项而是让我们访问其依赖项容器以便我们可以解析我们需要的任何类型的实例。示例源代码[2]首先创建一个新的 Blazor 应用程序。然后就像我们之前所做的那样我们将创建一些可以注入的类这些类将使用状态成员来跟踪已创建的类实例的数量。创建以下接口public interface IOwnedDependency1 {public int InstanceNumber { get; } }public interface IOwnedDependency2 {public int InstanceNumber { get; } }然后创建实现这些接口的类。我将只显示第一类的代码第二类将是相同的。public class OwnedDependency1 : IOwnedDependency1 {private static volatile int PreviousInstanceNumber;public int InstanceNumber { get; }public OwnedDependency1(){InstanceNumber System.Threading.Interlocked.Increment(ref PreviousInstanceNumber);} }将接口 它们的实现类注册为 Scoped如果需要提醒您请参阅比较依赖范围[3]。接下来编辑 Index.razor 页面以便我们应用程序的用户可以通过单击复选框来切换组件。page /input idshow-component typecheckbox bindShowComponent / label forshow-componentShow component/labelif (ShowComponent) {MyOwningComponent / }code {bool ShowComponent  false; }当 ShowComponent 为 true 时我们的标记将创建 MyOwningComponent 的一个实例并渲染它。接下来我们将创建 MyOwningComponent。OwningComponentBase在 Shared 文件夹中创建一个名为 MyOwningComponent 的新 Razor 组件。我们将从 OwningComponentBase 中派生此组件。inherits OwningComponentBase然后创建一些类字段来保存依赖项。code {private IOwnedDependency1 OwnedDependency1;private IOwnedDependency2 OwnedDependency2; }解决拥有的依赖关系OwningComponentBase 创建的私有依赖性容器通过其ScopedServices 属性提供给我们。protected IServiceProvider ScopedServices { get; }我们可以使用这个 IServiceProvider 来解析组件所拥有的私有依赖容器中的依赖实例。inherits OwningComponentBase using Microsoft.Extensions.DependencyInjectiondivOwnedDependency1.InstanceNumber  OwnedDependency1.InstanceNumber /div divOwnedDependency2.InstanceNumber  OwnedDependency2.InstanceNumber /divcode {private IOwnedDependency1 OwnedDependency1;private IOwnedDependency2 OwnedDependency2;protected override void OnInitialized(){OwnedDependency1 ScopedServices.GetServiceIOwnedDependency1();OwnedDependency2 ScopedServices.GetServiceIOwnedDependency2();} }第 1 行从 OwningComponentBase 继承来给我们自己的私有依赖容器。第 2 行使用 DependencyInjection 命名空间因此我们可以在 IServiceProvider 上使用 GetServiceT 扩展方法。第 19 21 行使用 OwningComponentBase.ScopedServices 属性来解析组件所需的依赖项实例。第 6 9 行显示为我们创建的依赖项的实例号。运行示例如果我们运行示例应用并勾选复选框我们将看到以下输出。OwnedDependency1.InstanceNumber 1OwnedDependency2.InstanceNumber 1取消勾选该复选框以允许删除我们的组件然后再次勾选该复选框以让 Blazor 创建 MyOwningComponent 的新实例。渲染输出现在应该如下所示。OwnedDependency1.InstanceNumber 2OwnedDependency2.InstanceNumber 2这表明每次创建组件时我们在组件的 OnInitialized 方法中解析的两个依赖项都是新的实例。依赖生命周期OwningComponentBase 类实现 IDisposable 接口。当从OwningComponentBase 派生的任何组件不再呈现时Blazor 将在 OwningComponentBase 上执行 Dispose 方法。组件上的 Dispose 方法将对其拥有的私有依赖项容器调用Dispose。反过来该容器创建的任何实现 IDisposable 的对象实例也将执行其 Dispose 方法。要演示这种行为请对应用程序进行以下更改。首先在我们的组件上重写 Dispose(bool isDisposing)并让它在被释放时输出日志。public void Dispose() {System.Diagnostics.Debug.WriteLine(Disposing   GetType().Name); }然后对于我们的每个依赖类OwnedDependency1 和 OwnedDependency2让它们实现 IDisposable并且再次让它们在执行 Dispose 时输出日志。public class OwnedDependency1 : IOwnedDependency1, IDisposable{... Other code omitted for brevity ...public void Dispose(){System.Diagnostics.Debug.WriteLine($Created {GetType().Name} instance {InstanceNumber});}}我们还可以在类的构造函数中添加一些日志记录。现在运行应用程序并切换复选框将输出类似于以下内容的日志文本。Created MyOwningComponentCreated OwnedDependency1 instance 1Created OwnedDependency2 instance 1Disposing OwnedDependency2 instance 1Disposing OwnedDependency1 instance 1Disposing MyOwningComponentCreated MyOwningComponentCreated OwnedDependency1 instance 2Created OwnedDependency2 instance 2Disposing OwnedDependency2 instance 2isposing OwnedDependency1 instance 2Disposing MyOwningComponent结论当您的组件只需要拥有一个依赖项时从 OwningComponentBaseT 派生当您的组件需要拥有多个依赖项时从非泛型 OwningComponentBase 派生。尽管解析组件依赖项实例的过程是一个手动过程但不需要处理任何创建的依赖项因为组件的依赖项容器将在 OwningComponentBase.Dispose 时处理它们。参考资料[2]源代码: https://github.com/mrpmorris/blazor-university/tree/master/src/DependencyInjection/OwningMultipleDependenciesTheRightWay
http://www.zqtcl.cn/news/187766/

相关文章:

  • 信息技术 网站建设教案做是么网站
  • 网站建设培训报名wordpress 到小程序
  • 郑州做网站软件建设网站培训
  • 做网站卖东西赚钱吗凡科互动官网登陆
  • 免费写作网站通道一通道二通道三免费
  • 腾讯云做网站选哪个网络广告推广员
  • 昆明网站开发哪家好做网站怎么做小图标
  • 泉州做外贸网站成都idc机房托管
  • 南京林业大学实验与建设网站宁波软件开发制作
  • 北京专业网站制作服务郑州有学网站制作
  • 搭建wordpress需要什么样的环境专注软件优化分享的网站
  • 网站备案后 如何建设下载免费ppt模板
  • 重慶网站建设网络服务器可提供的常见服务有什么、什么、什么和什么服务
  • 网站制作有限公司英文都不懂 学网站建设维护难吗
  • 深圳网站建设公司开发制作网站免费的网页网站
  • 开发网站公司德州做网站公司电话
  • 公司门户网站开发个人网站备案成功后怎么做
  • 远程医疗型网站开发三合一网站有必要吗
  • 什么网站是用html做的网站制作成本多少钱
  • 邢台企业网站制作建设wordpress多站点配置教程
  • 湖北省建设厅网站a群诸城网站价格
  • 江苏网站设计如何设置wordpress不自动更新
  • 已经有网站怎么做淘宝客网站建设 国外
  • 百度新闻源网站株洲在线论坛二手市场
  • 招聘做微信公众号网站维护推广网上国网的好处
  • php企业网站通讯录管理系统查找企业资料的网站
  • 专门做娱乐场所的设计网站有虚拟主机wordpress
  • 在线制作书封网站建德建设局官方网站
  • 广州建设手机网站wordpress 外部链接跳转
  • 传播公司可以做门户网站吗深圳常平网站建设制作公司