C# collectionValidator的Fluent验证筛选器参数
我正在尝试使用FluentValidations筛选要在集合验证程序中使用的参数: 我有一个用于集合的泛型类,它看起来像:C# collectionValidator的Fluent验证筛选器参数,c#,fluentvalidation,C#,Fluentvalidation,我正在尝试使用FluentValidations筛选要在集合验证程序中使用的参数: 我有一个用于集合的泛型类,它看起来像: public class ItemCollection<TEntity> { public ItemCollection(TEntity[] items); public TEntity[] Items { get; } } 这不起作用,因为X总是指集合而不是单个项目。如何筛选传递给集合验证器的参数?我摸索了一下,似乎无法使用SetValida
public class ItemCollection<TEntity>
{
public ItemCollection(TEntity[] items);
public TEntity[] Items { get; }
}
这不起作用,因为X总是指集合而不是单个项目。如何筛选传递给集合验证器的参数?我摸索了一下,似乎无法使用
SetValidator
SetCollectionValidator
建议已被或将被弃用。
我能想到的唯一办法是:
this.RuleForEach(x => x.Items).Must(x =>
{
var validator = new FooDTOValidator(allowedMetadata[x.Key]);
return validator.Validate(x).IsValid;
});
编辑
如评论中所述,我们发布了错误消息。也许有机会保护它们。将此视为未测试,但根据测试结果,我们可以获取根上下文数据并添加失败(如果有)
this.RuleForEach(x => x.Items).Custom((x, context) =>
{
var validator = new FooDTOValidator(allowedMetadata[x.Key]);
var result = validator.Validate(x);
if (!result.IsValid)
{
foreach (var failure in result.Errors)
{
context.AddFailure(failure);
}
}
});
我摸索了一下,似乎无法使用
SetValidator
SetCollectionValidator
建议已被或将被弃用。
我能想到的唯一办法是:
this.RuleForEach(x => x.Items).Must(x =>
{
var validator = new FooDTOValidator(allowedMetadata[x.Key]);
return validator.Validate(x).IsValid;
});
编辑
如评论中所述,我们发布了错误消息。也许有机会保护它们。将此视为未测试,但根据测试结果,我们可以获取根上下文数据并添加失败(如果有)
this.RuleForEach(x => x.Items).Custom((x, context) =>
{
var validator = new FooDTOValidator(allowedMetadata[x.Key]);
var result = validator.Validate(x);
if (!result.IsValid)
{
foreach (var failure in result.Errors)
{
context.AddFailure(failure);
}
}
});
您是否尝试过此.RuleFor(x=>x.Items).SetCollectionValidator(…)?您是否尝试过此.RuleFor(x=>x.Items).SetCollectionValidator(…)?如果我只是想扔掉验证消息,我不会为适配器创建开销。但我最终坚持了每个人的原则,所以我给你check@johnny5你说得对。我们丢失了错误信息。也许编辑中的代码值得一试。我还没有测试过它,我很好奇这是否有效。如果我只是想扔掉验证消息,我不会为适配器创建开销。但我最终坚持了每个人的原则,所以我给你check@johnny5你说得对。我们丢失了错误信息。也许编辑中的代码值得一试。我还没有测试过它,我很好奇这是否有效。