Тип 'FluentValidation.IValidator' не является открытым универсальным классом - PullRequest
0 голосов
/ 29 августа 2018

В приложении ASP.NET Core я регистрируюсь

services.Scan(x => x.FromAssembliesOf(typeof(Startup))
  .AddClasses(y => y.AssignableTo(typeof(IValidator)))
  .AsImplementedInterfaces()
  .WithScopedLifetime()); 

Я попытался повторить это с помощью Autofac, поэтому я использовал:

builder
  .RegisterAssemblyTypes(typeof(Startup).Assembly)
  .AsClosedTypesOf(typeof(IValidator))
  .AsImplementedInterfaces()
  .InstancePerLifetimeScope();

Но я получил следующую ошибку:

Unhandled Exception: System.ArgumentException: 
The type 'FluentValidation.IValidator' is not an open generic class or interface type so it won't work with methods that act on open generics.

Что я делаю не так?

1 Ответ

0 голосов
/ 30 августа 2018

Вместо AsClosedTypesOf используйте предложение Where, чтобы отфильтровать и зарегистрировать только те типы, которые реализуют IValidator. AsClosedTypesOf специально для поддержки открытых дженериков. В документах Autofac есть множество примеров, которые могут вам помочь.

...