Angenommen, ich habe eine Schnittstelle IFolderRepositorymit 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 DatabaseFolderRepositoryund 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 DatabaseFolderRepositoryImplementierung synchrone Methoden verwendet, um mit der Datenbank zu kommunizieren, verwendet skydrive leider viele asyncund 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 TaskRückgabetypen haben (gegen Sie wird es keine Regel brauchen)?
IFolderSchnittstelle haben, warum verlassen Sie sichFolderbei all Ihren Methoden auf die konkrete Implementierung ( )?