簡體   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