实现一个作用域限定的 CircuitHandler
。
在重写的 OnCircuitOpenedAsync
方法中,将 Circuit 存储到应用程序状态中。
在组件中,从您的应用程序状态中获取 Circuit。
以下是一个基本的最小示例:
CircuitHandler
using Microsoft.AspNetCore.Components.Server.Circuits;
internal class MyCircuitHandler : CircuitHandler
{
private IMyCircuit myCircuit;
public MyCircuitHandler(IMyCircuit myCircuit)
{
this.myCircuit = myCircuit;
}
public override Task OnCircuitOpenedAsync(Circuit circuit, CancellationToken cancellationToken)
{
myCircuit.CurrentCircuit = circuit;
return base.OnCircuitOpenedAsync(circuit, cancellationToken);
}
}
应用状态
internal interface IMyCircuit
{
Circuit CurrentCircuit { get; set; }
}
internal class MyCircuit : IMyCircuit
{
public Circuit? CurrentCircuit { get; set; }
}
Program.cs
builder.Services.AddScoped<IMyCircuit, MyCircuit>();
builder.Services.AddScoped<CircuitHandler, MyCircuitHandler>();
Index.razor
@page "/"
@inject IMyCircuit circuit
<h1>Circuit: @circuit?.CurrentCircuit?.Id</h1>