Autofac und MediatR im Einsatz. Ich versuche Handler in ContainerBuilder zu registrieren, aber es wird immer FehlerRegister Handler in Autofac
kann nicht Implementierungstyp 'DataSourceHandler`2 [TEntity, TModel]' für Service-Typ ‚MediatR.IRequestHandler'2 [DataSourceQuery'2 instanziiert [ TEntity, TModel], Kendo.Mvc.UI.DataSourceResult]
Meine Suche:
public class DataSourceQuery<TEntity, TModel> : IRequest<DataSourceResult>
where TEntity : class, IEntityBase
where TModel : class
{
public DataSourceRequest Request { get; set; }
}
Handler:
public class DataSourceHandler<TEntity, TModel> : IRequestHandler<DataSourceQuery<TEntity, TModel>, DataSourceResult>
where TEntity : class, IEntityBase
where TModel : class
{
private readonly ApplicationDbContext context;
public DataSourceHandler(ApplicationDbContext context)
{
this.context = context;
}
public DataSourceResult Handle(DataSourceQuery<TEntity, TModel> message)
{
return context.Set<TEntity>()
.ProjectTo<TModel>()
.ToDataSourceResult(message.Request);
}
}
`ve versucht, es auf verschiedene Weise wie zu registrieren:
builder.RegisterGeneric(typeof(DataSourceHandler<,>)).As(typeof(IRequestHandler<,>))
.AsImplementedInterfaces();
builder.RegisterGeneric(typeof(DataSourceHandler<,>)).As(typeof(IRequestHandler<,>))
.InstancePerDependency();
builder.RegisterAssemblyTypes(typeof(DataSourceHandler<,>).GetTypeInfo().Assembly)
.AsClosedTypesOf(typeof(DataSourceHandler<,>)).AsImplementedInterfaces();
builder.RegisterGeneric(typeof(DataSourceHandler<,>))
.As(typeof(IRequestHandler<,>));
builder.RegisterAssemblyTypes(typeof(DataSourceHandler<,>).GetTypeInfo().Assembly)
.AsClosedTypesOf(typeof(IRequestHandler<,>));
aber es funktioniert nicht.
Was soll ich tun?
Sehen Sie sich das Beispiel zur Registrierung des mediatR mit Autofac an: https://github.com/jbogard/Mediatr/blob/master/samples/Mediatr.Examples.Autofac/Program.cs – 12seconds
Es funktioniert auch nicht. Ich registriere in Startup.cs: services.AddMediatr(); –