我有一個大型專案,其中包含許多 fluentvalidation 類,它們位于與 Startup 不同的專案中。我正在嘗試將它們全部添加,而不像我目前那樣為每個添加一行:
services.AddControllers().AddFluentValidation(s =>
{
s.RegisterValidatorsFromAssemblyContaining<Validation1>();
s.RegisterValidatorsFromAssemblyContaining<Validation2>();
...
});
有沒有更簡單的方法?
uj5u.com熱心網友回復:
找到一種解決方法,創建一個空白類和介面(我將其命名為 ValidationLink),并在驗證類中繼承介面。
services.AddControllers().AddFluentValidation(s =>
{
s.RegisterValidatorsFromAssemblyContaining<ValidationLink>();
});
public class Validator1 : AbstractValidator<Class1>, IValidationLink
{
...
}
uj5u.com熱心網友回復:
注冊 Validator 有以下三種方式。
- 使用 AddTransient 在 Service 中注冊每個驗證器。
- 使用“RegisterValidatorsFromAssemblyContaining”方法注冊會在包含指定型別的程式集中注冊從 AbstractValidator 類派生的所有驗證器。
- 使用“RegisterValidatorsFromAssembly”方法注冊。
來源這里
如果您使用選項 2 并將代碼中的 Startup 替換為從另一個程式集的 AbstractValidator 派生的任何類,它將注冊該程式集的所有驗證器
例子:
services.AddControllers().AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<AnotherValidationClass>());
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/409255.html
標籤:
