MassTransit Saga:注入作用域服务的正确方法是什么?

MassTransit Saga: what is correct way to inject scoped services?

我有 asp .net core 3.1 应用程序和 Masstransit 7.2.2。 我有一个传奇,我必须在其中使用范围服务。现在我注入 IServiceProvider 并手动创建所需的对象:

using var scope = serviceProvider.CreateScope();
var myService1 = scope.ServiceProvider.GetRequiredService<IMyService1>();
var myService2 = scope.ServiceProvider.GetRequiredService<IMyService2>();

如果我在 saga 的不同步骤中需要 IMyService1IMyService2,我必须在每个步骤中编写相同的代码,因为我应该处理 scope 对象。

这是唯一的方法还是有其他方法?

谢谢!

要在状态机中使用依赖项,您必须创建一个 custom activity。 activity 将从为传奇创建的范围内的容器中解析。