0
我有DateTime?
屬性的類。一般來說,它們是一對(請求/接收)日期。我在我的項目中使用FluentValidation
。我可以寫驗證器,它會收到兩個DateTime?
params? 條件:使用條件驗證幾個屬性FluentValidation
- 要求必須小於或等於接收
- 接收不能設置時要求爲null
也許我將有更多的條件在未來。
我有DateTime?
屬性的類。一般來說,它們是一對(請求/接收)日期。我在我的項目中使用FluentValidation
。我可以寫驗證器,它會收到兩個DateTime?
params? 條件:使用條件驗證幾個屬性FluentValidation
也許我將有更多的條件在未來。
您不能使用LessThanOrEqualTo
擴展方法,因爲它不適用於可爲空的日期時間。
有一點仍不清楚,但我可以猜測:如果Receive
爲空,Request
可以有任何值(甚至爲空),對嗎?
你可以做這樣的事情(我用的一類項目,具有相同的屬性,你的),一步到位的管理你的兩個規則:
public ItemValidator()
{
RuleFor(m => m.Request)
.Must((x, y) => CheckRequestAndReceive(x));
}
private static bool CheckRequestAndReceive(Item item)
{
//Reveive can't be set when Request is null
if (item.Request == null)
return item.Receive == null;
//Request can be anything if Receive is null
if (item.Receive == null)
return true;
//Request must be less or equal to Receive
return item.Receive.Value >= item.Request.Value;
}
測試:
var item = new Item
{
Receive = DateTime.Now
};
var errors = new ItemValidator().Validate(item);// => ERROR
var item2 = new Item()
{
Request = DateTime.Now
};
errors = new ItemValidator().Validate(item2); //=> OK
var dt = DateTime.Now;
var item3 = new Item
{
Receive = dt,
Request = dt
};
errors = new ItemValidator().Validate(item3); //=> OK
var item4 = new Item
{
Receive = DateTime.Now,
Request = DateTime.Now.AddDays(1)
};
errors = new ItemValidator().Validate(item4); //=> ERROR
謝謝許多。它正在工作。你節省了我的時間。 – user571874