Я хочу создать валидацию для моего c # web api.В моем первом вопросе вы можете увидеть мои модели: Нажмите здесь
Теперь я создал следующие валидаторы:
public class AnimalValidator<T> : AbstractValidator<T> where T : Animal
{
private ISessionService sessionService;
public AnimalValidator(ISessionService sessionService)
{
this.sessionService = sessionService;
RuleSet("Create", () =>
{
// some validation
});
RuleSet("Edit", () =>
{
// some validation
});
}
}
и ...
public class DogValidator : AnimalValidator<Dog>
{
private ISessionService sessionService;
public DogValidator(ISessionService sessionService) // Error: There is no argument given that corresponds to the required formal parameter 'sessionService'
{
this.sessionService = sessionService;
RuleSet("Create", () =>
{
// some validation
});
RuleSet("Edit", () =>
{
// some validation
});
}
}
и ...
public class CatValidator : AnimalValidator<Cat>
{
private ISessionService sessionService;
public CatValidator(ISessionService sessionService) // Error: There is no argument given that corresponds to the required formal parameter 'sessionService'
{
this.sessionService = sessionService;
RuleSet("Create", () =>
{
// some validation
});
RuleSet("Edit", () =>
{
// some validation
});
}
}
В моем первом вопросе, как упомянуто выше, я сделал код, как в ответе.
Я пытаюсь вызвать проверку следующим образом:
if (validationService.IsValid(animal, ruleSetNames: new List<string>() {
"Create" }, propertyNames: null))
{ // do stuff here }
Проблема в том, что это животное типа object
.
Нужна ваша помощь.Как избавиться от ошибок валидатора и как правильно вызвать валидацию?
Заранее спасибо.
РЕДАКТИРОВАТЬ:
Как сделатьЯ должен зарегистрировать свой валидатор в ValidationFactory?В настоящее время у меня есть:
validators.Add(typeof(IValidator<Animal>), new ValidationFactoryItem(typeof(AnimalValidator), new object[] { sessionService }));
validators.Add(typeof(IValidator<Dog>), new ValidationFactoryItem(typeof(DogValidator), new object[] { sessionService }));
validators.Add(typeof(IValidator<Cat>), new ValidationFactoryItem(typeof(CatValidator), new object[] { sessionService }));
Я всегда получаю сообщение об ошибке:
System.InvalidOperationException: 'Для данного типа не зарегистрирован валидатор.'
Кажется, это тип object
, но это должен быть либо собака, либо кошка ...
Пожалуйста, помогите мне.:)