首页 > 解决方案 > 仅当服务存在时,如何在 blazor 中注入服务?

问题描述

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

那么如何在不给我这个错误的情况下注入服务,如果没有注入服务,服务将只是空的。这可能吗?

例如

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

[Inject]
protected Foo Foo { get; set; }

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

标签: c#asp.net-coreblazor

解决方案


你可以这样做

@inject IServiceProvider ServiceProvider

@code
{
  private IMyService MyService;

  protected override void OnInitialized()
  {
    MyService = ServiceProvider.GetService<IMyService>();
    base.OnInitialized();
  }
}

推荐阅读