











在 Program.cs 中注册服务
提供一个 IIdGenerator 接口
实现类使用 Yitter.IdGenerator 生成唯一 ID
支持依赖注入,方便在 Controller、Service 中调用
安装程序包:
dotnet add package Yitter.IdGenerator
定义接口:
public interface IIdGenerator
{
long NewId();
}
实现接口:
using Yitter.IdGenerator;
public class YitterIdGenerator : IIdGenerator
{
public YitterIdGenerator()
{
var options = new IdGeneratorOptions(workerId: 1); // WorkerId 可根据部署环境动态设置
YitIdHelper.SetIdGenerator(options);
}
public long NewId()
{
return YitIdHelper.NextId();
}
}
在 Program.cs 中注册服务
builder.Services.AddSingleton<IIdGenerator, YitterIdGenerator>();
在 Controller 或 Service 中使用
public class OrderService
{
private readonly IIdGenerator _idGenerator;
public OrderService(IIdGenerator idGenerator)
{
_idGenerator = idGenerator;
}
public void CreateOrder()
{
long orderId = _idGenerator.NewId();
Console.WriteLine($"新订单 ID: {orderId}");
}
}
如果你部署在 Kubernetes 或容器环境,可以考虑通过环境变量或 Redis 分布式锁自动分配 WorkerId,避免冲突。
引用:
https://github.com/yitter/IdGenerator/blob/master/C%23/source/Yitter.IdGenerator/YitIdHelper.cs
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。