仅当服务存在时,如何才能在 blazor 中注入该服务?

Ven*_*sky 5 c# asp.net-core blazor

如果我使用Inject属性并尝试注入未注册的服务,则会出现错误There is no registered service of type X

那么我怎样才能注入服务而不给我这个错误,如果服务没有注入,服务将只是空。这可能吗?

例如

Foo如果未注册,这会给我一个错误。

[Inject]
protected Foo Foo { get; set; }
Run Code Online (Sandbox Code Playgroud)

但我想允许它Foo没有注册,在这种情况下它将是null

Pet*_*ris 9

你可以这样做

@using Microsoft.Extensions.DependencyInjection
@inject IServiceProvider ServiceProvider

@code
{
  private IMyService MyService;

  protected override void OnInitialized()
  {
    MyService = ServiceProvider.GetService<IMyService>();
    base.OnInitialized();
  }
}
Run Code Online (Sandbox Code Playgroud)