在Blazor Server中,服务可以使用不同的作用域生命周期,包括transient、scoped和singleton。作用域生命周期决定了服务在应用程序中的生存期。
scoped生命周期表示每个请求(或SignalR连接)创建一个新的服务实例,并在请求处理完成后销毁该实例。在服务类中,可以使用@scoped注释将服务标记为具有scoped生命周期。
下面是一个简单的示例,演示了如何在Blazor Server中创建具有scoped生命周期的服务:
//定义一个具有scoped生命周期的服务 @scoped public class MyScopedService { public int Counter { get; set; } = 0; }
//在组件中使用MyScopedService @inject MyScopedService MyService
Counter Value: @MyService.Counter
@code { private void IncrementCounter() { MyService.Counter++; } }
在上面的代码中,MyScopedService被标记为具有scoped生命周期。然后,它被注入到组件中,并在组件中的按钮单击事件中使用。每次单击按钮时,将递增MyService.Counter的值。
注意:在Blazor WebAssembly中,scoped生命周期没有实际意义。所有服务在客户端应用程序中只有一个实例。只有在Blazor Server中使用scoped生命周期才有意义。