4 votes

Appel/Invocation d'une méthode basée sur une valeur de type chaîne de caractères contenue dans un tableau

J'ai un tableau structuré qui contient les détails de différents rapports qui peuvent être exécutés. Chaque rapport appelle une méthode différente et actuellement le programme doit vérifier manuellement la valeur du rapport sélectionné pour appeler spécifiquement la méthode appropriée.

J'aimerais stocker le nom de la méthode dans le tableau de structure et faire en sorte que le programme invoque cette méthode en cas de correspondance. Cela est-il possible ?

Actuellement :

if (this.cboSelectReport.Text == "Daily_Unload")
{
   reportDailyUnload();
 }

Idéalement :

if(this.cboSelectReport.Text == MyArray[i].Name)
{
   something(MyArray[i].MethodName);
}

UPDATE

J'ai essayé un certain nombre des suggestions ci-dessous, mais aucune n'a fonctionné. Ces échecs sont probablement dus à la façon dont mon programme est structuré.

1voto

Dave S Points 745

Ajoutez une propriété de délégué à votre structure (par exemple de type Action) puis invoquez ce délégué lorsque vous en avez besoin. Il suffit de définir cette propriété sur la méthode que vous souhaitez appeler lors de l'instanciation des instances de la structure.

0voto

skyfoot Points 3480

Utilisation d'un delegate y dictionary<string, delegate>

void Main()
{
    var reports = new Dictionary<string, Report>
    {
        {"Daily_Unload", ReportDailyUnLoad}
    };

    var report = "Daily_Unload";
    reports[report]();
}

delegate string Report();

string ReportDailyUnLoad()
{
    return "daily unload report";
}

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