У меня есть обобщенный c класс, который обрабатывает различные объекты одинаково. Я пытаюсь реализовать Validator в этом классе generi c, тип Validator должен меняться в зависимости от типа generi c. Например, если типом является Person, PersonValidator должен быть инициализирован. Как это возможно с помощью FluentValidation и Autofa c? Я пробовал использовать универсальный c BaseValidator, но я не могу зарегистрировать его правильно, поэтому PersonValidator не вызывается.
Generi c class
var validator = new BaseValidator<TEntity>(); // TEntity = Person
await validator.ValidateAndThrowAsync(person);
BaseValidator
public class BaseValidator<TEntity> : AbstractValidator<TEntity>
{
}
PersonValidator
public class PersonValidator : BaseValidator<Person>
{
public PersonValidator()
{
RuleFor(x => x.Name).NotEmpty();
}
}
Autofa c регистраций, которые я пробовал
builder.RegisterGeneric(typeof(BaseValidator<>)).As(typeof(IValidator<>)).InstancePerDependency();
builder.RegisterType<BaseValidator<Person>().As(typeof(IValidator<Person>)).InstancePerDependency();
builder.RegisterType<PersonValidator>().As(typeof(IValidator<Person>)).InstancePerDependency();
builder.RegisterType<PersonValidator>().As(typeof(BaseValidator<Person>)).InstancePerDependency();