J'essaye de développer un cadre pour plusieurs applications que nous développons ici et l'une des classes de framework que j'essaye de construire est pour créer une base de données. Idéalement, j'aurais une méthode où je pourrais passer les deux méthodes suivantes: CreateDatabaseTables() et ResetDatabaseValues (); Par exemple, je pourrais avoir trois applications que j'appellerai Application1, Application2 et Application3; chacune de ces applications aurait un schéma de base de données différent que j'incorporerais dans le code (par exemple, CreateDatabaseTables a un tas de commandes "Create Table"). Je veux créer une seule méthode de base de données qui peut être utilisé par chacun d'entre eux de sorte qu'il ressemblerait à quelque chose comme:Passer plusieurs méthodes (déléguer?)
Application1
BuildLocalDatabase(CreateTablesForApp1(),ResetDatabaseValuesforApp1())
Application2
BuildLocalDatabase(CreateTablesForApp2(),ResetDatabaseValuesforApp2())
demande3
BuildLocalDatabase(CreateTablesForApp3(),ResetDatabaseValuesforApp3())
La méthode BuildLocalDatabase ferait quelque chose comme:
publid bool BuildLocalDatabase(CreateTablesForApp(),ResetDatabaseValuesforApp())
{
- see if database file exists; if it does, delete it
- create a new database file
- call CreateTablesForApp
- if the tables were created successfully, call ResetDatabaseValuesForApp
}
Toutes les pensées sur comment j'irais capable de faire cela. Il y a un tas de choses de validation et d'autres choses que je voudrais faire dans la fonction BuildLocalDatabase et évidemment mon but ici est de minimiser la quantité de code de duplication dans chaque application ... des suggestions sur la façon de procéder. Je pense en C++, je pourrais avoir juste passé les méthodes CreateTablesForApp et ResetDatabaseValuesForApp en tant que points de fonction, mais il ne semble pas y avoir un moyen de faire cela en C#. Et les délégués semblent bien le gérer car je ne suis vraiment limité qu'à une seule méthode (et la multidiffusion semble vouloir exécuter les méthodes deux fois).
Vous voudrez peut-être envisager de formater le code dans votre question, afin que les gens puissent le lire plus facilement. –