irc-netcore-api/IRaCIS.Core.Application/MassTransit/CultureInfoMiddleware.cs

35 lines
1.1 KiB
C#

using System.Globalization;
using System.Threading;
using System.Threading.Tasks;
using IRaCIS.Core.Domain.BaseModel;
using MassTransit;
public class CultureInfoFilter<T> : IFilter<ConsumeContext<T>> where T : DomainEvent
{
public async Task Send(ConsumeContext<T> context, IPipe<ConsumeContext<T>> next)
{
var cultureInfoName = context.Message.CultureInfoName;
if (!string.IsNullOrEmpty(cultureInfoName))
{
// 设置线程的文化信息
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureInfoName);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureInfoName);
}
try
{
// 继续处理消息
await next.Send(context);
}
finally
{
// 还原文化信息(可选)
// Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; // 或者之前的文化
// Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
}
}
public void Probe(ProbeContext context) { }
}