2011-12-18 57 views

回答

1

這只是一個接口,所以關於它是否需要返回「錯誤」的值的問題是由什麼消耗它決定的。據我所知,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(一般工具)的功能是一類我把通用功能。蹩腳的名字,但它是短暫的。