2 votes

Formulaires mettant en œuvre la même méthode

J'ai deux formulaires, le formulaire A et le formulaire B, que je vais utiliser pour saisir des informations dans un fichier XML. Ces deux formulaires devront appeler des méthodes qui sont fondamentalement les mêmes (même nom, même implémentation).

Je ne peux pas utiliser une classe de base dans ce contexte, puisque le formulaire A et le formulaire B héritent déjà de System.Windows.Forms.Form . Devrais-je simplement utiliser une interface que ces deux formulaires mettront en œuvre ? Je doute que ce soit la meilleure approche puisque les méthodes dont ils ont besoin sont les mêmes.

Pourriez-vous suggérer une meilleure approche à cet égard ?

Merci.

1voto

Gian Acuna Points 1033

Vous pouvez créer une classe dans laquelle sont stockées les fonctions courantes de votre projet. Vous pouvez appeler ces fonctions dans n'importe lequel de vos formulaires.

namespace ProjectNameSpace
{
    public class GenericFunctions
    {
        public static void WriteToXML()
        {
         // come code here
        }
    }
}

1voto

Saurabh Points 11097

Pour réutiliser le code et suivre le principe dit "DRY", vous devez procéder à la factorisation "EXTRACT CLASS" afin d'éviter la duplication du code.

Si la phrase ci-dessus semble si générique, en termes simples, créez une classe d'utilité qui est le candidat parfait si vous ne voulez pas avoir différentes implémentations sous différentes formes et déplacez le code dans la classe statique d'utilité.

public static  class Utility
{
    public static void WriteToXML()
    {
        // come code here
    }
}

0voto

DeanOC Points 2024

Il est tout à fait possible d'introduire une forme de base dont les formes A et B héritent :

public partial class BaseForm : System.Windows.Forms.Form
    {
        public BaseForm()
        {
            InitializeComponent();
        }

        public void  CommonMethod()
        {

        }
    }

public partial class FormA : BaseForm
{
    public Form1()
    {
        InitializeComponent();
    }

    private void LocalMethod()
    {
        CommonMethod();
    }

}

public partial class FormB : BaseForm
{
    public Form1()
    {
        InitializeComponent();
    }

    private void LocalMethod()
    {
        CommonMethod();
    }

}

Cela dit, si votre code commun n'implique aucun élément lié à l'interface utilisateur, alors @Gian Acuna a la bonne réponse : vous pouvez simplement créer une classe séparée avec des méthodes statiques.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X