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))
)和投擲一些例外或返回空值,如果類型不喜歡預期:
但也有很多人(我認爲這是大多數)是完全無視參數:
我試圖找到一些指導或使用參數的提示,但不幸的是我什麼都沒發現。 兩種方法都在做他們的工作,但更正確的方法之一?這些方法的優點和缺點是什麼?我應該忽略還是使用參數?
我個人的觀點並不是檢查參數,以允許轉換器的使用更靈活,但我很高興得到您的意見。
該參數的意義在於調用者將告訴你要將其轉換爲什麼;如果你總是忽略它們並返回相同的結果,那麼與檢查並拋出異常相比,它不會更「靈活」。同樣,如果他們只是要求你要回來的東西,那又如此:它實際上並不是更靈活。在大多數情況下,你只能轉換成一件事,所以它很少是真正的問題,因此很多代碼忽略它。 –