每次我编写值转换器时,我都想知道如何处理IValueConverter的targetType
和Convert
方法中指定的ConvertBack
参数:
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))
)并抛出一些异常或返回null值,如果类型不是预期的那样:
但是他们中的许多人(我认为这是大多数人)完全忽略了参数:
我尝试使用参数找到一些指导或提示,但不幸的是我发现什么都没有。 这两种方法都在做自己的工作,但其中一种方法更正确吗?这些方法的优点和缺点是什么?我应该忽略或使用参数吗?
我个人的观点是不检查参数以使转换器的使用更加灵活,但我很高兴收到您的意见。
答案 0 :(得分:0)
调用者将告诉您转换值所需的类型:
for($x = 0; $x <= 6; $x++)
{
$date = date('j', strtotime('this week +' .$x . 'days'));
$arr[$date] = [
'y' => $date,
's' => 0,
'c' => 0,
'cl' => 0
];
}
到true/false
,您可以忽略Visibility
。显而易见的是如何使用转换器,不需要抛出异常。 targetType
转换价值,例如使用转换器转换为targetType
或ImageSource
。在第一种情况下,您想要生成图像(例如错误图像),而在另一种情况下,您需要一种简单的颜色(例如红色)。 Brush
的转换器,并且不支持它是否显而易见,那么您可以通过抛出异常来警告开发人员。我认为最常见的情况是1)。