FluentValidation和对象的集合,其属性应该是唯一的

问题描述 投票:0回答:1

我有课:

Sponsored { int Order };

我收藏了它:

IEnumerable<Sponsored> sponsored; 

我想检查Order是否是这个系列的独特之处。

我可以通过FluentValidation来做吗?

我有:

SponsoredValidator : AbstractValidator<IEnumerable<Sponsored>>

SponsoredValidator : AbstractValidator<Sponsored>

@Edit:它应该通过ValidationAttribute与Web API POST方法连接

[Validator(typeof(SponsoredValidator))]
c# fluentvalidation
1个回答
1
投票
public class SponsoredCollectionValidator : AbstractValidator<IEnumerable<Sponsored>>
{
    private class SponsoredComparer : IEqualityComparer<Sponsored>
    {
        public bool Equals(Sponsored x, Sponsored y) => x?.Order == y?.Order;
        public int GetHashCode(Sponsored obj) => obj.Order;
    }

    public SponsoredCollectionValidator()
    {
       RuleFor(coll => coll)
           .Must(coll => coll.Distinct(new SponsoredComparer()).Count() == coll.Count())
           .WithMessage("Elements are not unique.");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.