У меня есть абстрактный класс Validator:
public abstract class Validator<T> where T : IValidatable
{
public abstract bool Validate(T input);
}
И у меня есть несколько конкретных реализаций. Один из них — AccountValidator:
public class AccountCreateValidator : Validator<IAccount>
{
public override bool Validate(IAccount input)
{
//some validation
}
}
Другой — LoginValidator:
public class LoginValidator : Validator<IAccount>
{
public override bool Validate(IAccount input)
{
//some different validation
}
}
Теперь я хочу создать фабрику для возврата экземпляра реализации валидатора. Что-то вроде:
public static class ValidatorFactory
{
public static Validator GetValidator(ValidationType validationType)
{
switch (validationType)
{
case ValidationType.AccountCreate:
return new AccountCreateValidator();
}
}
}
Затем я хотел бы назвать это как
Validator myValidator = ValidatorFactory.GetValidator(ValidationType.AccountCreate);
Однако ему не нравится строка return new AccountCreateValidator() или тот факт, что я объявляю myValidator как Validator, а не Validator< SomeType>
.
Любая помощь будет оценена по достоинству.