Dans mon projet, j'ai quelques fonctions dans les classes dérivées qui sont identiques, à l'exception d'une section qui est différente dans chaque classe.Refactorisation des méthodes dérivées des classes dérivées à la méthode de la classe de base commune? (C#)
Je veux tirer la méthode jusqu'à la classe de base.
Les fonctions se présentent comme suit:
func(parameters)
{
//COMMON BITS
if (someVar == "value1") { htmlFilename = line; }
else if (someVar == "value2") { subVideoLink = line; }
else if (someVar == "value3") { linksH2HeadingWritten = true; }
//COMMON BITS
}
où les lignes centrales des différentes fonctions ressemblent toutes ci-dessus mais ont des valeurs différentes pour « someVar » et différentes variables dans la « variable = ligne; » format.
C'est la forme généralisée:
if (someVar == "CommandName") { variable = line; }
L'idée que j'avais été d'envoyer la fonction d'un Dictionary<string CommandName, ref string>
... mais il semble que je ne peux pas faire un dictionnaire avec chaîne ref en elle ...
Je supprimerais alors les cas booléens de la 'variable' en les remplaçant par des versions de chaîne avec des valeurs de "vrai" ou "faux".
Y a-t-il une meilleure façon de procéder?
Ahhh ... Je vois ce que vous dites. Merci, je vais essayer ça. –
Au lieu de jeter dans la base, pourquoi ne pas le marquer abstrait? –
Les méthodes abstraites nécessitent une classe de base abstraite. Si la classe de base doit être concrète pour une raison quelconque, il s'agit d'une implémentation par défaut possible. Vide serait un autre choix. Faites votre choix. :) – dahlbyk