[英]Register a generic Validator using FluentValidation and Autofac
我有一個通用類,它以相同的方式處理不同的實體。 我試圖在這個泛型類中實現一個驗證器,驗證器類型應該根據泛型類型而改變。 例如,如果類型是 Person,則 PersonValidator 應該被初始化。 這怎么可能使用 FluentValidation 和 Autofac? 我已經使用通用 BaseValidator 嘗試過它,但我似乎無法正確注冊它,因此不會調用 PersonValidator。
通用類
var validator = new BaseValidator<TEntity>(); // TEntity = Person
await validator.ValidateAndThrowAsync(person);
基礎驗證器
public class BaseValidator<TEntity> : AbstractValidator<TEntity>
{
}
人員驗證器
public class PersonValidator : BaseValidator<Person>
{
public PersonValidator()
{
RuleFor(x => x.Name).NotEmpty();
}
}
我嘗試過的 Autofac 注冊
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();
你不能使用var validator = new BaseValidator<TEntity>();
您必須在您的IValidator<T>
(或IValidator<T>
)中注入一個IValidator<Person>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.