値が列挙型の有効な値の範囲内にあることをテストするカスタム バリデータを作成しました。
public class IsInEnumValidator<T> : PropertyValidator {
  public IsInEnumValidator() : base("Property {PropertyName} it not a valid enum value.") { }
  protected override bool IsValid(PropertyValidatorContext context) {
    if (!typeof(T).IsEnum) return false;
    return Enum.IsDefined(typeof(T), context.PropertyValue);
  }
}
そして、バリデーターをチェーンするための拡張メソッド:
public static IRuleBuilderOptions<T, TProperty> IsInEnum<T, TProperty>(this IRuleBuilder<T, TProperty> ruleBuilder) {
  return ruleBuilder.SetValidator(new IsInEnumValidator<TProperty>());
}
私はこのように使用したい:
RuleFor(x => x.Day).IsInEnum<DayOfWeek>();
私の質問:
- ....IsInEnum<T, DayOfWeek>()目的の代わりに特定する必要があるため、これは期待どおりに機能しません- ....IsInEnum<DayOfWeek>();。どうすればこれを達成できますか?
- このカスタムバリデーターをテストしたい - このバリデーターでデータをテストするのではなく、バリデーター自体をテストしたい。ライブラリのドキュメントでは、カスタム バリデータをテストする方法ではなく、データをテストする方法について説明しています。ライブラリには多くのテスト コードがあるようですが、再利用できるものはありますか? NUnitを使用しています。