You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建封装为NuGet包的.NET Blazor服务及集成使用?

将Blazor服务封装为NuGet包并提供友好DI注册接口的步骤

Blazor的服务生命周期管理很简单,在Program.cs里调用Services.AddSingleton<*你的类*>()、Services.AddTransient<*你的类*>()或Services.AddScoped<*你的类*>(),就能把类注册成DI可访问的服务。但如果要把复杂功能封装成NuGet包,同时给Blazor提供友好的服务注册接口,可按以下步骤操作:

一、创建NuGet包的类库项目

  • 新建一个与Blazor项目同框架版本的.NET类库项目(例如.NET 8)
  • 将需要封装的功能类、相关接口全部移入该类库中,比如示例中的NugetPackage_1_serviceClass、NugetPackage_2_serviceClass等

二、封装友好的服务注册扩展方法

为了让使用者无需手动逐个注册服务,我们可以给IServiceCollection编写扩展方法,把所有服务注册逻辑封装起来:

using Microsoft.Extensions.DependencyInjection;
using SomeNuGetPackage_1;
using SomeNuGetPackage_2;
using SomeNuGetPackage_3;

namespace YourNuGetPackageName
{
    public static class ServiceCollectionExtensions
    {
        // 对外提供的友好注册入口
        public static IServiceCollection AddYourNuGetServices(this IServiceCollection services)
        {
            // 内部统一处理所有服务的生命周期注册
            services.AddSingleton<NugetPackage_1_serviceClass>();
            services.AddTransient<NugetPackage_2_serviceClass>();
            services.AddScoped<NugetPackage_3_serviceClass>();
            
            // 若需要支持配置参数,可重载该方法接收配置对象
            return services;
        }
    }
}

三、打包生成NuGet包

  • 打开类库项目属性,配置包的元数据(包ID、版本号、作者描述等)
  • 右键项目选择「打包」,或使用命令行执行:dotnet pack
  • 生成的.nupkg文件会存放在项目的bin/Release(或Debug)目录下

四、在Blazor项目中使用NuGet包

  1. 安装该NuGet包(可本地安装生成的.nupkg,或发布到NuGet源后在线安装)
  2. 在Program.cs中只需调用一行扩展方法,即可完成所有服务的注册:
using YourNuGetPackageName;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();

// 一键注册NuGet包内的所有服务
builder.Services.AddYourNuGetServices();

var app = builder.Build();

// HTTP请求管道配置保持不变
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");

app.Run();

内容的提问来源于stack exchange,提问作者Mike Armstrong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:48:29