1
每次我写一个值转换器我想知道如何处理在Convert
和ConvertBack
方法IValueConverter的规定targetType
参数的目标类型参数:我应该使用的IValueConverter
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))
)和投掷一些例外或返回空值,如果类型不喜欢预期:
但也有很多人(我认为这是大多数)是完全无视参数:
我试图找到一些指导或使用参数的提示,但不幸的是我什么都没发现。 两种方法都在做他们的工作,但更正确的方法之一?这些方法的优点和缺点是什么?我应该忽略还是使用参数?
我个人的观点并不是检查参数,以允许转换器的使用更灵活,但我很高兴得到您的意见。
该参数的意义在于调用者将告诉你要将其转换为什么;如果你总是忽略它们并返回相同的结果,那么与检查并抛出异常相比,它不会更“灵活”。同样,如果他们只是要求你要回来的东西,那又如此:它实际上并不是更灵活。在大多数情况下,你只能转换成一件事,所以它很少是真正的问题,因此很多代码忽略它。 –