Blazor依赖注入是框架级基础设施,服务需在Program.cs中按生命周期注册(Singleton/Scoped/Transient),组件用@inject或构造函数注入,自定义服务须接口+实现+注册闭环,Scoped在WebAssembly中按标签页隔离。

Blazor 依赖注入(DI)不是可选项,而是框架级基础设施——所有服务都通过统一容器管理,组件不手动 new 实例,也不硬编码依赖,解耦、可测、易维护。
Blazor WebAssembly 和 Blazor Server 都使用 Program.cs(而非旧版 Startup.cs)注册服务。注册时需明确生命周期,这是关键细节:
示例(Program.cs):
builder.Services.AddSingleton组件中用 @inject 最直接;普通 C# 类(如服务内部依赖其他服务)必须用构造函数注入。
示例(Index.razor):
@page "/"写一个真正可用的服务,要闭环:
ICartService),明确契约CartService),处理具体逻辑(注意线程安全和状态隔离)特别提醒:Scoped 服务在 WebAssembly 中不会跨标签页共享,同一标签页内多个组件注入的是同一个实例——这点常被误认为“不生效”,其实是设计如此。
注入失败?多半是这几种情况:
AddScoped 等调用)CartService,却 @inject ICartService,但接口没被注册)基本上就这些。不复杂,但容易忽略注册和生命周期的对应关系。
以上就是Blazor 依赖注入(DI)配置和使用方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号