0
假設我定義一些驗證邏輯是這樣的:註冊所有類,它實現IValidator <SomethingValidatable>使用Unity
public class Rule1 : IValidator<SomethingValidatable>
{
public IList<Error> Validate(SomethingValidatable item)
{
// apply validation logic to item
}
}
某處在代碼我結合IValidator<SomethingValidatable>
到一個或多個具體Rule
:
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;
}
}
這樣做的工作。但我會避免每個規則逐一註冊。我真的很想說:尊敬的Unity,註冊每個類在一個給定的命名空間,實現IValidator<SomethingValidatable>
。
看看這個[SO Answer](http://stackoverflow.com/a/27372032/1504480)。這是關於按照慣例註冊的。 –