在WPF USERCONTROLS中解决通用的铸造问题
> WPF应用程序经常使用基本USERCORTROL作为专门的,派生的Usercontrols的模板。 但是,在这些控件之间施放通用类型时,此设置可能会导致困难。
铸造困难
>派生的UserControls通常通过在其基本USERCORTROL中调用方法来处理事件。 这些基本方法可能会期望特定的通用数据可蒙文类型。 如果派生的userControl的dataContext是派生的通用类型(例如,而不是BaseViewModel<wire>
),则尝试将其施放到基本的USERCONTROL的预期类型中,以BaseViewModel<part>
InvalidCastException
>
List<wolf>
问题的根List<animal>
List<wolf>
List<animal>
这种铸造失败源于仿制药的基本本质。 每个通用的实例化,例如>和,都是独特的类型。 从到>的铸造是不允许的,因为它可能会产生不一致。
例如,
>>>>>> List<wolf>
允许添加List<animal>
>(动物,而不是狼)。 这将创建一个无效的Sheep
包含不适当的元素。List<wolf>
> 避免施放错误
Generic<derived>
>直接铸造从Generic<base>
> 是天生不安全的,应避免。
而不是铸造,而是考虑使用共同和违反。 这种方法允许在通用类型之间兼容,但仅适用于接口而不是类。 替代设计模式,例如依赖注入或使用非生成基础类别/接口,可能更适合解决此问题。
>以上是如何解决WPF USERCORTROL中的不可逆转通用铸造问题?的详细内容。更多信息请关注PHP中文网其他相关文章!