0
でIValidator
Rule
に
IValidator<SomethingValidatable>
をバインド
public class Rule1 : IValidator<SomethingValidatable>
{
public IList<Error> Validate(SomethingValidatable item)
{
// apply validation logic to item
}
}
を:
protected override void ConfigureContainer(IUnityContainer container)
{
container
.RegisterType<IValidator<SomethingValidatable>, Rule1>("a")
.RegisterType<IValidator<SomethingValidatable>, Rule2>("b");
}
私はこの検証が必要なところで、私は何かを持っています:
public class HereIValidateClass
{
private readonly IValidator<SomethingValidatable>[] validators;
public HereIValidateClass(IValidator<SomethingValidatable>[] validators)
{
this.validators = validators;
}
public IList<Error> DoSomething()
{
foreach (var validator in validators)
{
var errors = validator.Validate(something);
// append to IList<Error>
}
return errors;
}
}
これは仕事をします。しかし、私は明示的にそれぞれのルールを1つずつ登録することを避けるでしょう。私は本当に言う:親愛なるUnityは、IValidator<SomethingValidatable>
を実装する与えられた名前空間の各クラスを登録します。
[SO Answer](http://stackoverflow.com/a/27372032/1504480)をご覧ください。それは慣例による登録に関するものです。 –