Maison >développement back-end >C++ >Comment lancer en toute sécurité générique à générique dans WPF?

Comment lancer en toute sécurité générique à générique dans WPF?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-28 18:41:09898parcourir

How to Safely Cast Generic to Generic in WPF?

La technique de convertissement des génériques en génériques en toute sécurité dans WPF

Dans WPF, il s'agit d'une méthode courante pour créer un contrôle utilisateur de base qui fournit des fonctions de partage de contrôle utilisateur dérivées. Afin de s'assurer que cette fonction est accessible à partir des instances dérivées, l'événement est généralement appelé dans le code caché caché du contrôle utilisateur dérivé, par exemple:

Cependant, la méthode de la main du contrôle de la base de la base peut nécessiter des types de paramètres spécifiques:
<code class="language-csharp">private void SomeClick(object sender, RoutedEventArgs e) {
    HandleClick(sender);
    MyDataGrid.Items.Refresh();
}</code>

Si le DataConText dans le contrôle utilisateur dérivé est dérivé, tel que BaseViewModel & lt; En effet, DataConText ne peut pas être directement converti en BaseViewModel & lt;
<code class="language-csharp">public class BaseUserControl : UserControl {
    protected void HandleClick(object sender) {
        var vm = (BaseViewModel<零件>)DataContext;
        ...
    }
}</code>

Pourquoi ne pouvons-nous pas convertir générique & lt;

Il est interdit de convertir générique & lt; Imaginez, convertit List & lt; Vous pouvez ensuite ajouter l'objet de mouton à la liste & lt; alternative

Afin de résoudre ce problème, la solution alternative suivante peut être prise en compte:

Utilisation d'interfaces au lieu de génériques pour définir le contrat que DataconText doit être implémenté.

en utilisant une interface collaborative ou onduleur pour lire de force uniquement les types génériques.

    L'héritage à travers les génériques, hériter de la classe auto-basée et réaliser ses propres fonctions spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn