我有一個驗證類實現了IDataErrorInfo,它具有您必須實現的所有方法。我如何重構此驗證?
一個是
public string this[string columnName]
{
get
{
}
}
return "";
現在,在這個switch語句我有我的一些形式的驗證。
現在我注意到我的很多表單都需要完全相同的驗證內容。
所以現在當我需要添加更多驗證時,我會創建一個實現「IDataErrorInfo」的新類,添加額外的閾值。
然後在視圖中我做這樣的事
CoreValidation coreReg = new CoreValidation();
try
{
UpdateModel(coreReg, regForm.ToValueProvider());
}
catch
{
return View();
}
MoreValidation moreReg = new MoreValidation();
try
{
UpdateModel(moreReg , regForm.ToValueProvider());
}
catch
{
return View();
}
我只是不喜歡這個事實,我需要有2個可能繼續增長不同的嘗試catch語句。如果我需要說採取「核心」和「更多」,並添加一些更多的驗證,不能進入任何一個這些我正在看另一個嘗試趕上。
我試圖去「CoreValidation」類,並提取switch語句和屬性,並把它放在一個新的類。
然後我的計劃是用swtich語句調用該類和方法。因此,在「更多」驗證類我會在這個
public string this[string columnName]
{
get
{
CoreValidtion(columnName); // this would contain the switch statement
//add another switch here with extra validation.
}
}
return "";
那我就只有一個嘗試捕捉,我不會重複任何代碼,因爲一切都將調用相同的方法(CoreValidation)。
但updateModel似乎無法弄清楚這一點。當UpdateModel嘗試設置無論它需要設置它無法找到屬性方法,因此所有屬性如
「用戶名」都設置爲空。
那麼我該怎麼做我想做的事?
感謝