【发布时间】:2017-06-01 08:38:28
【问题描述】:
每次编写值转换器时,我都想知道如何处理在IValueConverter 的Convert 和ConvertBack 方法中指定的targetType 参数:
object Convert(object value, Type targetType, object parameter, CultureInfo culture)
object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
我注意到许多实现都在使用 targetType,只需检查它 (if (targetType == typeof(RequiredType))) 并在类型不符合预期时抛出一些异常或返回空值:
但他们中的许多人(我认为这是大多数)完全忽略了参数:
我尝试使用该参数找到一些指导方针或提示,但不幸的是我一无所获。 两种方法都在发挥作用,但是其中一种方法更正确吗?这些方法的优点和缺点是什么?我应该忽略还是使用该参数?
我个人的观点是不检查参数以使转换器的使用更灵活,但我很高兴得到您的意见。
【问题讨论】:
-
该参数的重点是调用者将告诉您将其转换为什么;如果你总是忽略它们并返回相同的东西,它不会比你检查并抛出异常更“灵活”。同样,如果他们只要求您要返回的东西,那么再次:它实际上不再灵活。在大多数情况下,您只会转换为一件事,因此它很少是真正的问题,因此为什么很多代码会忽略它。
标签: c# .net wpf xaml ivalueconverter