Auparavant, nous avions la configuration de pipeline suivante travail à des fins auditloggingEnregistrement d'un PostProcessor en utilisant ASP.NET base contrainte pipeline MediatR DI
public class AuditLogPostProcessor<TRequest, TResponse> :
IRequestPostProcessor<TRequest, TResponse>
where TRequest : IAuditLogRequest<TResponse>
Où IAuditLogRequest implémente IRequest
public interface IAuditLogRequest<TResponse> : IRequest<TResponse>
tous et que les commandes implémente l'IAuditLogRequest a atteint le AuditLogPostProcessor.
enregistrement à l'aide SimpleInjector se résume comme suit
_container.RegisterCollection(typeof(IRequestPostProcessor<,>),
new[] { typeof(GenericRequestPostProcessor<,>),typeof(AuditLogPostProcessor<,>) });
Actuellement, nous utilisons le ASP.NET de base DI pour notre injection de dépendance à l'enregistrement suivant.
services.AddScoped(typeof(IRequestPostProcessor<,>), typeof(GenericRequestPostProcessor<,>));
services.AddScoped(typeof(IRequestPostProcessor<,>), typeof(AuditLogPostProcessor<,>));
Lorsqu'une commande met en œuvre le IRequest, nous obtenons l'erreur
TypeLoadException: GenericArguments[0], 'Command',
on 'AuditLogPostProcessor`2[TRequest,TResponse]' violates
the constraint of type parameter 'TRequest'.
Il semble que le DI ne respecte pas la contrainte. Puis-je obtenir le comportement souhaité avec ASP.NET Core DI?