Rumah >pembangunan bahagian belakang >C++ >Mengapa saya tidak boleh membuang generik ke generik dalam usercontrol WPF?
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,
), dan anda cuba menukarnya ke jenis asas (BaseViewModel<wire>
. BaseViewModel<connector>
BaseViewModel
Dalam pandangan konseptual, ini sama dengan transformasi Generic<派生类型>
ke Generic<基类型>
. Ini membolehkan anda menambah domba ke
, 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!