我利用FluentValidation做一些服务器端验证我的计划。为了充分利用一些自定义的验证我使用must
验证,可让您在谓词传递和返回一个bool测试验证是否是成功的。我试图验证包括检查是否数组中存在的字符串。
这些细节在很大程度上是无关紧要然而,由于只是我需要能够对谓词传递到旁边一个第二string[]
变量的方法。
下面是我的验证方法:
public bool StringInArray(Func<string> predicate, string[] testArray)
{
if(testArray.Contains(predicate.Invoke()))
{
return true;
}
return false;
}
这里是我在哪里调用此方法。
RuleFor(p => p.Funder)
.Must(StringInArray(p => p, funderStrings));
funderStrings
是谁的我检查内容的阵列。 p.Funder
是我检查数组内的字符串。
该p => p
的说法是不正确的,我得到一个Delegate 'Func<string>' does not take 1 argument
编译错误。我不确定我应该如何通过串入StringInArray
方法。
无论你想这样的:
public bool StringInArray(Func<string, string> conversion, string[] testArray)
{
if (testArray.Any((s) => s.Equals(conversion(s))))
{
return true;
}
return false;
}
...
RuleFor(p => p.Funder).Must(() => StringInArray(p => p, funderStrings));
或这个:
public Func<bool> StringInArray(string s, string[] testArray)
{
return () => testArray.Contains(s);
}
...
RuleFor(p => p.Funder).Must(() => StringInArray(p => p, funderStrings));
请详细说明进一步什么你到底期望StringInArray
方法做的Must
方法来接收和做