2011-12-18 47 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(一般工具)的功能是一类我把通用功能。蹩脚的名字,但它是短暂的。