首页 > 后端开发 > C++ > 为什么我不能在WPF USERCORTROL中对仿制药施加通用?

为什么我不能在WPF USERCORTROL中对仿制药施加通用?

Mary-Kate Olsen
发布: 2025-01-28 18:33:10
原创
927 人浏览过

Why Can't I Cast Generic to Generic in WPF UserControls?

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

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板