这也许是容易的,但搜索它在互联网上已经给我头都疼
这里的问题是:
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
,现在的问题温莎城堡如何正确地注入这些验证程序的ClassA
和ClassB
,是有办法做到这一点? 或者有没有更好的解决办法?
如果有人认为我的课堂设计是错误的请,我打开的任何建议。 到目前为止,我认为这是正确的。 是的,验证对特定类别的具体配置。 但也有原因,是抽象:
- Validator是一个复杂的对象,有时应该连接到数据库,所以我必须通过接口而不是实现来构造单元测试的原因。
- 没办法,使用不同的接口,任何验证的,因为我使用的唯一方法是
Validate
- 我认为
MyBaseClass.Validate()
公共模板方法模式是不是?