может быть, это легко, но поиск в Интернете уже вызывает у меня головную боль
вот проблема:
interface IValidator
{
void Validate(object obj);
}
public class ValidatorA : IValidator
{
public void Validate(object obj) { }
}
public class ValidatorB : IValidator
{
public void Validate(object obj) { }
}
interface IClassA { }
interface IClassB { }
public class MyBaseClass
{
protected IValidator validator;
public void Validate()
{
validator.Validate(this);
}
}
public class ClassA : MyBaseClass, IClassA
{
//problem: validator should ValidatorA
public ClassA(IValidator validator) { }
}
public class ClassB : MyBaseClass, IClassB
{
//problem: validator should ValidatorB
public ClassB(IValidator validator) { }
}
public class OtherClass
{
public OtherClass(IClassA a, IClassB b) { }
}
//on Main
var oc = container.Resolve<OtherClass>();
Есть идеи?
РЕДАКТИРОВАТЬ
Я зарегистрировал ValidatorA
и ValidatorB
с Named
, теперь проблема, как Castle Windsor может правильно внедрить эти валидаторы в ClassA
и ClassB
, есть ли способ сделать это? или есть лучшее решение?
если кто-то думает, что мой дизайн класса неправильный, пожалуйста, я открыт для любых советов. Пока я считаю это правильным. Да, валидатор имеет определенную конфигурацию для определенного класса. но есть причины, по которым он абстрагирован:
Validate
MyBaseClass.Validate()
общий метод шаблона , не так ли?