2
我在研究這個問題,因爲它是關於類似但不同的接口的另一個問題的重複而關閉的。另一個接口INotifyDataErrorInfo不一定具有相同的規則。應該IDataErrorInfo.Error返回所有錯誤還是僅返回屬性級錯誤?
應該IDataErrorInfo.Error返回所有錯誤嗎?還是應該只返回對象級錯誤?
我在研究這個問題,因爲它是關於類似但不同的接口的另一個問題的重複而關閉的。另一個接口INotifyDataErrorInfo不一定具有相同的規則。應該IDataErrorInfo.Error返回所有錯誤還是僅返回屬性級錯誤?
應該IDataErrorInfo.Error返回所有錯誤嗎?還是應該只返回對象級錯誤?
這只是一個接口,所以關於它是否需要返回「錯誤」的值的問題是由什麼消耗它決定的。據我所知,WPF不會調用Error並且在沒有它的情況下會正常工作,但是誰知道將來會調用Error。所以我認爲它應該返回一個值。我個人使用它來獲取某個對象的完整錯誤列表(例如,當用戶按下ok按鈕時)。作爲一個有點幫手我有這個代碼功能:
public static string GetErrorsFromIDataErrorInfo(IDataErrorInfo source, params string[] columns)
{
return columns.Select(c => source[c]).Where(e => !string.IsNullOrWhiteSpace(e))
.FlattenToString("\r\n");
}
然後調用它像這樣的錯誤調用返回的數據:
string System.ComponentModel.IDataErrorInfo.Error
{
get { return GT.GetErrorsFromIDataErrorInfo(this, "Code", "Name"); }
}
唯一的缺點是,你需要指定要調用的屬性名稱,但這是無法避免的。你可以使用反射,但如果在Where中調用Error,則這可能是無效的。
BTW,FlattenToString是,我已經定義了把一個IEnumerable成字符串和GT(一般工具)的功能是一類我把通用功能。蹩腳的名字,但它是短暫的。