16

null 可能な DateTime プロパティと共に bool があります。Boolがtrueに設定されている場合にのみDateTimeが必要です...そして、boolがtrueの場合は日付を検証したいと思います。

今までこんな表情…

When(p => p.HasVisa == true, () => RuleFor(p => p.VisaExpiryDate).NotNull());

ここで、.Must 拡張機能とカスタムの BeAValidDate メソッドを使用して、その式の日付を検証しようとしています...

When(p => p.HasVisa == true, () => RuleFor(p => p.VisaExpiryDate).NotNull().Must(BeAValidDate));

private bool BeAValidDate(DateTime date)
{
  if (date == default(DateTime))
    return false;
  return true;
}

しかし、.Must 拡張機能では、null 許容の DateTime を操作できません。null 許容の日付でこの種の検証を行うにはどうすればよいですか?

ありがとう

4

3 に答える 3

2

Joachim が述べたように、null と非 null の両方の日付を受け入れる BeAValidDate のオーバーロードが必要です。

private bool BeAValidDate(DateTime date)
{
  if (date == default(DateTime))
    return false;
  return true;
}

private bool BeAValidDate(DateTime? date)
{
  if (date == default(DateTime))
    return false;
  return true;
}
于 2013-05-25T07:15:56.160 に答える