Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk selamat melemparkan generik ke generik di WPF?

Bagaimana untuk selamat melemparkan generik ke generik di WPF?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-28 18:41:09827semak imbas

How to Safely Cast Generic to Generic in WPF?

Teknik menukarkan generik ke dalam generik dengan selamat di WPF

Dalam WPF, ia adalah kaedah yang biasa untuk membuat kawalan pengguna asas yang menyediakan fungsi perkongsian kawalan pengguna yang diperolehi. Untuk memastikan fungsi ini diakses dari keadaan yang diperolehi, acara ini biasanya dipanggil dalam kod tersembunyi yang tersembunyi dari kawalan pengguna yang diperolehi, contohnya:

Walau bagaimanapun, kaedah pengendali kawalan pengguna asas mungkin memerlukan jenis parameter tertentu:
<code class="language-csharp">private void SomeClick(object sender, RoutedEventArgs e) {
    HandleClick(sender);
    MyDataGrid.Items.Refresh();
}</code>

Jika DataContext dalam kawalan pengguna yang diperolehi diperolehi, seperti BaseViewModel & lt; Ini kerana DataContext tidak boleh ditukar secara langsung kepada BaseViewModel & LT;
<code class="language-csharp">public class BaseUserControl : UserControl {
    protected void HandleClick(object sender) {
        var vm = (BaseViewModel<零件>)DataContext;
        ...
    }
}</code>

Kenapa kita tidak boleh menukar generik & lt;

dilarang untuk menukar generik & lt; Bayangkan, tukar & lt; Anda kemudian boleh menambah objek domba untuk menyenaraikan & lt; alternatif

Untuk menyelesaikan masalah ini, penyelesaian alternatif berikut boleh dipertimbangkan:

menggunakan antara muka dan bukannya generik untuk menentukan kontrak yang mesti dilaksanakan DataContext.

menggunakan antara muka kolaboratif atau penyongsang untuk secara paksa membaca hanya jenis generik.

    warisan melalui generik, mewarisi kelas berasaskan diri dan merealisasikan fungsi khususnya sendiri.

Atas ialah kandungan terperinci Bagaimana untuk selamat melemparkan generik ke generik di 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