Rumah >pembangunan bahagian belakang >C++ >Mengapa saya tidak boleh membuang generik ke generik dalam usercontrol WPF?

Mengapa saya tidak boleh membuang generik ke generik dalam usercontrol WPF?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-28 18:33:10900semak imbas

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

WPF UserControl Penukaran Genetik: Masalah penukaran dari generik yang diperolehi ke asas kelas generik

Dalam WPF, apabila pelbagai UserControl berkongsi ciri -ciri yang sama, UserControl kelas asas biasanya ditakrifkan dan insiden dikendalikan dalam kod yang menyembunyikan usercontrol yang diperolehi. Walau bagaimanapun, dalam beberapa kes, apabila cuba menukar DataContext ke dalam jenis jenis genetik dalam UserControl kelas asas,

pengecualian boleh ditemui.

InvalidCastException Penampilan yang tidak normal adalah kerana jenis DataContext adalah jenis yang diperoleh (contohnya,

atau

), dan anda cuba menukarnya ke jenis asas (). Ini kerana tidak boleh ditukar kepada BaseViewModel<wire>. BaseViewModel<connector> BaseViewModel Dalam pandangan konseptual, ini sama dengan transformasi Generic<派生类型> ke Generic<基类型>. Ini membolehkan anda menambah domba ke

, tetapi ini akan memusnahkan integriti

, yang boleh menyebabkan ketidakkonsistenan. List<wolf> List<animal> Satu -satunya pengecualian adalah menggunakan konsep seperti antara muka dan menggunakan kolaboratif dan penyongsang, tetapi ini hanya terpakai kepada antara muka, bukan untuk kelas. Oleh itu, dalam adegan anda, anda tidak boleh menukar List<animal> ke List<wolf>.

Atas ialah kandungan terperinci Mengapa saya tidak boleh membuang generik ke generik dalam usercontrol WPF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn