如何将服务注入Blazor?

jeissoni22

我在尝试向客户端项目中注入一些服务时遇到了麻烦。Program.cs文件中,我具有以下内容:

public class Program
    {
        public static async Task Main(string[] args)
        {
            var builder = WebAssemblyHostBuilder.CreateDefault(args);
            builder.RootComponents.Add<App>("#app");

            builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

            await builder.Build().RunAsync();

            ConfigureServices(builder.Services);

        }


        public static void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton<IMetamaskInterop, MetamaskBlazorInterop>();
            services.AddSingleton<MetamaskService>();
            services.AddSingleton<MetamaskInterceptor>();
        }
    }

在一个新组件中,我尝试如下注入这些服务:

@inject IJSRuntime JSRuntime;
@inject MetamaskService metamaskService;
@inject MetamaskInterceptor metamaskInterceptor;

但是这样做给我一个错误,它是以下内容:

在此处输入图片说明

感谢您的帮助或指导。

互联网

您不应ConfigureServicesProgram类中引入新的静态方法这不是引发异常的原因,但是它ConfigureServices与Startup类中定义的方法的名称(过去在WebAssembly Blazor中使用,然后删除...)一样,具有很大的误导性

有时,您可能需要第二种方法进行条件配置,但不要命名它ConfigureServices在当前实例中,您不需要第二种方法。只需按照下面的步骤进行即可。

当您使用第二种方法时,请勿在await builder.Build().RunAsync();此代码构建和执行应用程序时运行,以免为时过晚而无法向服务集合添加更多服务。只需将IServiceCollection对象传递给第二个方法,当它返回build并运行您的应用程序时即可。

这是您代码的更新版本:

public class Program
    {
        public static async Task Main(string[] args)
        {
            var builder = WebAssemblyHostBuilder.CreateDefault(args);
            builder.RootComponents.Add<App>("#app");

            builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
            
            builder.Services.AddSingleton<IMetamaskInterop, MetamaskBlazorInterop>();
            builder.Services.AddSingleton<MetamaskService>();
            builder.Services.AddSingleton<MetamaskInterceptor>();

            await builder.Build().RunAsync();
        }
    }  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章