Supposons que j'ai créé une interface IFolderRepository
avec des méthodes comme celle-ci:
IEnumerable<Folder> GetAllFolders();
Folder GetFolderWithId(int id);
void AddFolder(Folder newFolder);
void ModifyFolder(Folder folderToModify, Folder folderAfterModification);
void RemoveFolder(Folder folderToRemove);
et j'ai implémenté DatabaseFolderRepository
et disons CacheFolderRepositoryDecorator
. Maintenant, «des centaines de lignes plus tard», j'aimerais ajouter la fonctionnalité des dossiers SkyDrive, donc je suis prêt à ajouter SkyDriveFolderRepository
. Malheureusement, alors que l' DatabaseFolderRepository
implémentation utilisait des méthodes synchrones pour parler avec la base de données, skydrive one utilise beaucoup de async
et await
. Que faire dans un tel cas? En cas de méthodes vides, le marquer comme async n'est pas une solution (nécessité de gérer les exceptions). Dois-je changer d'interface pour revenir Task<T>
? Bien sûr, cela fonctionnera dans l'exemple ci-dessus, mais ce ne sont que 2 classes d'implémentation d'interface. Ou la plupart de mes interfaces devraient-elles avoir des Task
types de retour (par contre, vous n'en aurez pas besoin)?
IFolder
interface, pourquoi comptez-vous sur une implémentation concrète (Folder
) dans toutes vos méthodes?