3

应该实现两个功能,我想知道我需要对输入进行哪种类型的验证以及如何管理错误。

Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert

End Function

Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack

End Function

我需要检查的类型和参数的类型是否符合我的预期。

如果他们不是,我应该什么都不返回并在另一个地方发现错误的行为吗?或者我应该在这里抛出异常或断言?

是否有任何最佳或建议的做法可以在这里应用?

4

2 回答 2

5

我个人检查类型和值,然后转换它。如果由于任何原因它无法转换,那么我只是返回value未转换的。我不会抛出任何异常或进行任何日志记录 - 大多数时候很容易看到转换是否失败,因为您在 UI 中看不到预期的项目。在转换器中记录错误可能非常昂贵,因此我避免使用它。

数据绑定(通常)无声无息地失败(我曾与转换器绑定一次在 Silverlight 中抛出一个巨大的拟合),您可以检查输出窗口是否有任何错误,如果在转换器中敲击条件断点非常简单有必要调试任何问题。

于 2010-03-16T11:16:24.680 回答
0

我只是想找出为什么需要在转换器中捕获异常?你有例子吗?

在我看来,应该没有必要这样做,并且对于可为空类型之类的东西,这些应该在转换器中正确处理,因为其他所有内容都应该在调用转换器之前处理。即,如果用户在数字字段中输入字符串,这应该被验证而不是转换器捕获。

于 2010-03-16T18:13:13.057 回答