在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中文網其他相關文章!