繁体   English   中英

我应该使用IValueConverter的targetType参数吗?

[英]Should I use the targetType parameter of the IValueConverter

每次我写一个值转换器时,我都想知道如何处理在IValueConverterConvertConvertBack方法中指定的targetType参数:

object Convert(object value, Type targetType, object parameter, CultureInfo culture)
object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)  

我注意到很多实现只是通过检查它来使用targetTypeif (targetType == typeof(RequiredType)) )并抛出一些异常或者如果类型不符合预期则返回null值:

但是其中许多(我认为它是大多数)完全忽略了参数:

我尝试使用参数找到一些指导或提示,但不幸的是我发现什么都没有。 这两种方法都在做自己的工作,但其中一种方法更正确吗? 这些方法的优点和缺点是什么? 我应该忽略或使用参数吗?

我个人的观点是不检查参数以允许转换器的使用更灵活,但我很高兴得到你的意见。

调用者将告诉您转换值所需的类型:

  1. 如果你知道你总是会转换为一种类型,例如true/falseVisibility ,那么你可以忽略targetType 显而易见的是如何使用转换器,不需要抛出异常。
  2. 根据targetType转换值,例如使用转换器转换为ImageSourceBrush 在第一种情况下,您想要生成图像(例如错误图像),在另一种情况下,您需要一种简单的颜色(例如红色)。
  3. 如果你知道有人可能会使用你想要的targetType你的转换器,并且它是否受支持并不明显,那么你可以通过抛出异常来警告开发人员。

我认为最常见的情况是1)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM