C# 如何注册IFilter<;PublishContext<;T>&燃气轮机;使用Autofac extensions时在MassTransit中
我正在使用Autofac扩展,找不到如何注册具有依赖项的C# 如何注册IFilter<;PublishContext<;T>&燃气轮机;使用Autofac extensions时在MassTransit中,c#,masstransit,C#,Masstransit,我正在使用Autofac扩展,找不到如何注册具有依赖项的IFilter。文档建议使用UsePublishFilter(typeof(TFilter),context),但是从哪里获取上下文呢 public static ContainerBuilder RegisterMassTransit(this ContainerBuilder builder, Func<IBusRegistrationContext, IBusControl> createBusFunc, Assembly
IFilter
。文档建议使用UsePublishFilter(typeof(TFilter),context)
,但是从哪里获取上下文呢
public static ContainerBuilder RegisterMassTransit(this ContainerBuilder builder, Func<IBusRegistrationContext, IBusControl> createBusFunc, Assembly consumerAssembly = null)
{
builder.AddMassTransit(cfg =>
{
if (consumerAssembly != null)
{
cfg.AddConsumers(consumerAssembly);
}
cfg.AddBus(createBusFunc);
});
return builder;
}
public void ConfigureContainer(ContainerBuilder builder)
{
builder
.RegisterMassTransit(CreateBus, Assembly.GetExecutingAssembly())
.RegisterTelemetryCollector();
}
private IBusControl CreateBus(IBusRegistrationContext registrationContext)
{
return Bus.Factory.CreateUsingAzureServiceBus(
cfg =>
{
cfg.Host(_serviceBusConnectionString);
cfg.UsePublishFilter(typeof(MyFilterWithDependencies<>), ????);
});
}
您应该将registrationContext
作为第二个参数传递。没错,我刚刚意识到我的问题是不明确,因为两个静态扩展类提供了完全相同的重载,所以我必须直接调用Autofac oneAutofacFilterExtensions.UsePublishFilter(cfg,typeof(ChaosEngineFilter),注册背景)代码>
public static void UsePublishFilter(this IPublishPipelineConfigurator configurator, Type filterType, ILifetimeScopeProvider lifetimeScopeProvider)