问题描述
我正在使用Autofac扩展名,但找不到如何注册具有依赖性的IFilter<PublishContext<T>>
。文档建议使用UsePublishFilter(typeof(TFilter<>),context)
,但从何处获得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<>),????);
});
}
似乎有一个超载,但哪里可以获取ILifetimeScopeProvider
?
public static void UsePublishFilter(this IPublishPipelineConfigurator configurator,Type filterType,ILifetimeScopeProvider lifetimeScopeProvider)
解决方法
您应该将registrationContext
作为第二个参数。