Angenommen, ich habe eine Schnittstelle IFolderRepository
mit folgenden Methoden erstellt:
IEnumerable<Folder> GetAllFolders();
Folder GetFolderWithId(int id);
void AddFolder(Folder newFolder);
void ModifyFolder(Folder folderToModify, Folder folderAfterModification);
void RemoveFolder(Folder folderToRemove);
und ich habe implementiert DatabaseFolderRepository
und sagen wir mal CacheFolderRepositoryDecorator
. Jetzt, Hunderte von Zeilen später, möchte ich die Funktionalität von SkyDrive-Ordnern hinzufügen, damit ich sie hinzufügen kann SkyDriveFolderRepository
. Während die DatabaseFolderRepository
Implementierung synchrone Methoden verwendet, um mit der Datenbank zu kommunizieren, verwendet skydrive leider viele async
und await
. Was ist in einem solchen Fall zu tun? Bei ungültigen Methoden ist das Markieren als asynchron keine Lösung (Ausnahmebehandlung erforderlich). Sollte ich die Schnittstelle ändern, um zurückzukehren Task<T>
? Sicher, es wird im obigen Beispiel funktionieren, aber es sind nur 2 Schnittstellenimplementierungsklassen. Oder sollten die meisten meiner Schnittstellen Task
Rückgabetypen haben (gegen Sie wird es keine Regel brauchen)?
IFolder
Schnittstelle haben, warum verlassen Sie sichFolder
bei all Ihren Methoden auf die konkrete Implementierung ( )?