我有一種情況,在繼續保存到數據庫之前,需要檢查幾件事情。C#驗證方法,可以返回多條消息
如果我要救的對象我有數據庫來檢查兩件事情:
- 是否所有所需的東西填充?
- 已經有一個具有相同地位的東西?
如果其中一項要求失敗,我想通知用戶由於條件1未滿足,或者條件2不符合或兩個條件都不符合,所以無法保存。
我應該只是創建一個名爲Validate()
的方法,並將文本消息放入返回參數?類似於
public string Validate()
{
string message = string.Empty;
if(! /*Do some validating for 1) */)
message = "Condition 1 not met";
if(! /*Do some validating for 2) */)
message += Environment.NewLine + "Condition 2 not met!"; //
return message;
}
然後在調用代碼中檢查message
是否爲空。這是一個好方法嗎?
我也一直在想兩種方法。但是,我必須在任何想要將對象保存到數據庫的地方調用這兩個方法。這樣我就重複了我自己。這樣,你得到的東西是這樣的:
public bool AreRequiredThingsFilled()
{
if(/* do something*/)
return true;
return false;
}
public bool CheckStatus()
{
if(/* do something*/)
return true;
return false;
}
然後我打電話給這兩種方法,並在調用代碼我必須設置我要顯示給用戶的消息。
我不知道該如何處理這種情況。對於這種情況是否有最佳做法?
假設在一次使用上面的代碼時,所有條件都不符合(即所有的yield都被命中),那麼在使用代碼中的'HasValidationErrors()'中的'.Any塊導致第一個'if()'再次產生'yield',即最終在IEnumerable中有3個項目。 – 2012-02-03 15:33:25