我正在使用SimpleInjector 4和FluentValidation7。我AbstractValidator的依赖于我DbContext。
public class Validator : AbstractValidator<LocationModel>
{
public LocationModelValidator(IReadOnlyRepository repository)
{
// Check the database to see if this location is already present
RuleFor(x => x.LocationId).Must(x => !repository.Location.Any(i => i.LocationId == x)).WithMessage("A Location with this ID already exists.");
}
}
Run Code Online (Sandbox Code Playgroud)
我的合成根看起来如下:
var container = new Container();
container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();
container.Register<IReadOnlyRepository, LocationDbContext>(Lifestyle.Scoped);
container.Register<IValidatorFactory>(() => new ServiceProviderValidatorFactory(GlobalConfiguration.Configuration));
container.Register(typeof(IValidator<>), assemblies, Lifestyle.Scoped);
container.RegisterWebApiControllers(GlobalConfiguration.Configuration);
container.Verify();
GlobalConfiguration.Configuration.DependencyResolver =
new SimpleInjectorWebApiDependencyResolver(container);
Run Code Online (Sandbox Code Playgroud)
ValidatorFactory的实现
public class ServiceProviderValidatorFactory : ValidatorFactoryBase
{
private readonly HttpConfiguration …Run Code Online (Sandbox Code Playgroud)