2010-04-20 81 views
0

的情況是這樣的:C#驗證方法

有4個控制兩個下拉菜單,兩個日期選取器和一些驗證規則。一個是主下拉
取決於倒在主降值,一些驗證規則將在兩個日期選取器和其他下拉控制應用。如果用戶改變在任何四個控制值
此驗證規則將觸發。

錯誤提供商需要在編輯的最後一個控制設置。

我想創造每個驗證規則的一種方法的。一個主法語法:

Private void ValidateData(Control ctrl) 
    { 
     ClearAllErrors(); 
     switch(value value in master dropdown) 
     case 'Value 1' : Rule1(ctrl) 
     case 'Value 2' : Rule2(ctrl) 
     .... 
    } 

而治之的方法是這樣的:

Private void Rule1(Control ctrl) 
{ 
    //Rule Logic 
    //Eg. Date in dropdown should between 5 days after the date in dropdown1 
    //and 3 days before the date in dropdown2. 
    //Set error provider on the control if rule breaks. 
} 

現在對任何四個控制的確認事件,我將傳遞控制和調用是validateData()方法。

想法是保持代碼的可維護性。這種方法是否可以通過任何方式進行優化,或者有更好的方法來處理這些驗證。

回答

1

你的方法沒有問題

1

使用驗證factory

+0

你能詳細說一下如何在驗證的情況下實現工廠模式嗎?也許一些僞代碼? – 2010-04-20 07:59:08

+0

請參閱我提供的鏈接中的C#示例。您可以返回布爾型,表示配置有效或無效,也可以使用基於異常的方法。 – thelost 2010-04-20 08:03:35

+0

不錯的選擇,但是:我們需要爲每個規則創建一個新類,它將實現一些基類,比如ValidationBase。隨着規則數量的增加,似乎所需的班級數量將超過屋頂。 – 2010-04-20 13:32:10