У меня есть интерфейс, который наследуется двумя классами и реализует его метод Validate (здесь нет проблем).
public interface IValidator
{
IEnumerable<ValidationError> Validate(MyModel model);
}
public class ValidatorA : IValidator
{
public IEnumerable<ValidationError> Validate(MyModel model)
{
var list = new List<ValidationError>();
//code to add items to list
return list;
}
}
public class ValidatorB : IValidator
{
public IEnumerable<ValidationError> Validate(MyModel model)
{
var list = new List<ValidationError>();
//code to add items to list
return list;
}
}
Чего я хочу добиться - это вызвать метод из интерфейса и вызвать все методы из класса (ValidatorA, ValidatorB), который наследует интерфейс. Ниже описано, как я это делаю, но это не касается дочерних классов. Что я делаю не так или как правильно это сделать?
//assuming this is inside a method of another class
//and injected inside
var validationErrors = _myInterfaceValidator.SelectMany(x => x.Validate(myModel)); //why is this not hitting validate from the child classes
return validationErrors.ToList();
Хорошо, возможно, некоторые люди в разделах комментариев правы, что проблема не может быть здесь.
Я предполагаю, что это из SimpleInjector, потому что я зарегистрировал интерфейс, как показано ниже:
container.RegisterCollection(typeof(IValidator));
Может ли это быть проблемой?