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

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

Susan Sarandon
Libérer: 2025-01-28 18:46:11
original
247 Les gens l'ont consulté

WPF UserControl Fonction Security Conversion Guide

Dans WPF, lorsque l'UserControl dérivé hérite de la classe auto-basée et des fonctions publiques partagées, le code caché par les dérivés userControls peut référencer le traitement de la classe de base. Cependant, l'accès à DataConText à partir de la classe de base peut provoquer InvalidcastException car il s'agit d'un type dérivé dans les dérivés userControls.

Jetons un coup d'œil à un exemple:

1

2

3

4

private void SomeClick(object sender, RoutedEventArgs e) {

    HandleClick(sender);

    MyDataGrid.Items.Refresh();

}

Copier après la connexion

dans la classe de base userControl:

1

2

3

4

5

6

public class BaseUserControl : UserControl {

   protected void HandleClick(object sender) {

       var vm = (BaseViewModel<Part>)DataContext;

       ...

   }

}

Copier après la connexion

Cela provoquera InvalidCastException, car le type de DataConText dans UserControls peut être BaseViewModel ou BaseViewModel .

How to Safely Cast Generic to Generic in WPF UserControls?
<<>

<不> Pourquoi ne peut-il pas être modifié directement?

<<> Convertir Geneic & LT; Considérez l'exemple suivant: <>

Si cette conversion est autorisée, un mouton est ajouté aux animaux, et il est en fait autorisé à l'ajouter aux loups, ce qui ne correspond pas au type.

<决> Solution

1

2

List<wolf> wolves = new List<wolf>();

List<animal> animals = (List<animal>)wolves; // 无法转换

Copier après la connexion

Afin de résoudre ce problème, la collaboration ou l'onduleur de l'interface peut être obligé de lire uniquement le type requis. Cependant, cette méthode ne peut être possible que lorsque la classe que vous avez référencée atteint l'interface nécessaire. Cela nécessite un ajustement de la structure du code. L'implémentation spécifique dépend de la définition et des besoins réels de .

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal