WPF UserControl泛型轉換:從派生泛型到基類泛型的轉換問題
在WPF中,多個UserControl共享相同功能時,通常會定義一個基類UserControl,並在派生UserControl的代碼隱藏中處理事件。然而,在某些情況下,嘗試在基類UserControl中將DataContext轉換為泛型基類型時,可能會遇到InvalidCastException
異常。
該異常的出現是因為DataContext的類型是派生類型(例如,BaseViewModel<wire>
或BaseViewModel<connector>
),而您試圖將其轉換為基類型(BaseViewModel
)。這是因為無法將Generic<派生类型>
轉換為Generic<基类型>
。
從概念上講,這類似於將List<wolf>
轉換為List<animal>
。這允許您將一隻羊添加到List<animal>
中,但這會破壞List<wolf>
的完整性,可能導致不一致。
唯一例外的情況是使用接口並利用協變和逆變等概念,但這只適用於接口,而不適用於類。因此,在您的場景中,無法將Generic<派生类型>
轉換為Generic<基类型>
。
以上是為什麼我不能在WPF USERCORTROL中對仿製藥施加通用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!