Autofac与MediatR的注册问题

Autofac与MediatR的注册问题,mediatr,Mediatr,我对MediatR使用AutoFac有一些问题。我的注册码在下面,我从GitHub中提取并稍微修改了它。类EntityContext位于主代码程序集中,并且assembly设置为该程序集: var builder = new Autofac.ContainerBuilder(); builder.RegisterApiControllers(Assembly); if (config != null) {

我对MediatR使用AutoFac有一些问题。我的注册码在下面,我从GitHub中提取并稍微修改了它。类
EntityContext
位于主代码程序集中,并且
assembly
设置为该程序集:

var builder = new Autofac.ContainerBuilder();

            builder.RegisterApiControllers(Assembly);

            if (config != null)
            {
                builder.RegisterWebApiFilterProvider(config);
            }

            builder.RegisterSource(new ContravariantRegistrationSource());

            builder.RegisterAssemblyTypes(typeof(EntityContextFactory).GetTypeInfo().Assembly).AsImplementedInterfaces();

            builder.RegisterAssemblyTypes(typeof(IMediator).GetTypeInfo().Assembly).AsImplementedInterfaces();

            builder.RegisterAssemblyTypes(typeof(Ping).GetTypeInfo().Assembly).Where(t =>

                    t.GetInterfaces().Any(i => TypeExtensions.IsClosedTypeOf(i, typeof(IRequestHandler<,>))
                                               || TypeExtensions.IsClosedTypeOf(i, typeof(IAsyncRequestHandler<,>))
                                               ||
                                               TypeExtensions.IsClosedTypeOf(i,
                                                   typeof(ICancellableAsyncRequestHandler<,>))
                                               || TypeExtensions.IsClosedTypeOf(i, typeof(INotificationHandler<>))
                                               || TypeExtensions.IsClosedTypeOf(i, typeof(IAsyncNotificationHandler<>))
                                               ||
                                               TypeExtensions.IsClosedTypeOf(i,
                                                   typeof(ICancellableAsyncNotificationHandler<>))
                    )
                )
                .AsImplementedInterfaces();
            builder.RegisterInstance(Console.Out).As<TextWriter>();

            builder.Register<SingleInstanceFactory>(ctx =>
            {
                var c = ctx.Resolve<IComponentContext>();
                return t =>
                {
                    object o;
                    return c.TryResolve(t, out o) ? o : null;
                };
            });

            builder.Register<MultiInstanceFactory>(ctx =>
            {
                var c = ctx.Resolve<IComponentContext>();
                return t => (IEnumerable<object>)c.Resolve(typeof(IEnumerable<>).MakeGenericType(t));
            });

            builder.RegisterConsumers(Assembly);

            Container = builder.Build();
var builder=new Autofac.ContainerBuilder();
建造商、注册商和承包商(装配);
如果(配置!=null)
{
builder.RegisterWebAPI过滤器提供程序(配置);
}
RegisterSource(新的ContrariantRegistrationSource());
RegisterAssemblyTypes(typeof(EntityContextFactory).GetTypeInfo().Assembly.AsImplementedInterfaces();
RegisterAssemblyTypes(typeof(IMediator).GetTypeInfo().Assembly.AsImplementedInterfaces();
RegisterAssemblyTypes(typeof(Ping).GetTypeInfo().Assembly)。其中(t=>
t、 GetInterfaces().Any(i=>TypeExtensions.IsClosedTypeOf(i,typeof(IRequestHandler))
||IsClosedTypeOf(i,typeof(IAsyncRequestHandler))
||
类型扩展.IsClosedTypeOf(i,
类型(ICancellableAsyncRequestHandler))
||类型扩展.IsClosedTypeOf(i,typeof(INotificationHandler))
||类型扩展.IsClosedTypeOf(i,typeof(IAsyncNotificationHandler))
||
类型扩展.IsClosedTypeOf(i,
类型(ICancellableAsyncNotificationHandler))
)
)
.a实现接口();
builder.RegisterInstance(Console.Out).As();
builder.Register(ctx=>
{
var c=ctx.Resolve();
返回t=>
{
对象o;
返回c.TryResolve(t,out o)→o:null;
};
});
builder.Register(ctx=>
{
var c=ctx.Resolve();
返回t=>(IEnumerable)c.Resolve(typeof(IEnumerable).MakeGenericType(t));
});
建造商、注册消费者(装配);
Container=builder.Build();
我的IRequestHandler注册没有一个可用于使用

using (var scope = container.BeginLifetimeScope())
            {

                scope.Resolve<AddTemplateHandler>();
            }
使用(var scope=container.BeginLifetimeScope())
{
scope.Resolve();
}
上述类型的显式注册也不起作用。
有人能帮忙吗?

为什么要尝试解析AddTemplateHandler?这是调解人的工作,这是一个集成测试。我想我可以返回一个具体的调用,并通过容器解决构造函数依赖关系。我要试试这个。