我想實現一個類,在IntegerUpDown和DecimalUpDown WPF控件上執行泛型功能。使用下面定義的類(簡化說明)。 TDataType將爲int或float。 TUpDownControl將是要麼IntegerUpDown或DecimalUpDown WPF控件 TControlDataType將是整數或小數點C#泛型類型轉換Decimal轉換爲Float - 「不能轉換類型'T1'? 'T2'「
class MyGenericClass<TDataType, TUpDownControl, TControlDataType>
where TControlDataType : struct, IComparable<TControlDataType>, IFormattable
where TDataType : struct, IComparable, IComparable<TDataType>
where TUpDownControl : CommonNumericUpDown<TControlDataType>
{
private TUpDownControl m_control;
public MyGenericClass(TUpDownControl ctrl)
{
m_control = ctrl;
}
public TDataType getVal()
{
TDataType val = (TDataType)m_control.Value;
return val;
}
}
我遇到的問題是,當我嘗試獲取價值和小數/整數轉換爲浮動/詮釋我得到錯誤 「無法轉換類型'TControlDataType?' 'TDataType'「 有沒有人有一個想法如何繞過這個?
謝謝
感謝您的回覆。我對c#比較陌生,並且不熟悉表達式樹。你能再解釋一下嗎?例如我會有一個像ConverterHolder = Expression ....的行。表達是什麼將執行轉換? –
user1400716
2014-09-04 22:24:10
@ user1400716:如果您是C#的新手,表達式樹會變得複雜(這是您在運行時編譯代碼的方式)。只需要使用Convert.ChangeType。 – SLaks 2014-09-05 00:15:35
非常感謝您的詳細解釋和解決方案。 – user1400716 2014-09-05 09:31:31