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中文网其他相关文章!