假设我已经IFolderRepository
使用以下方法创建了接口:
IEnumerable<Folder> GetAllFolders();
Folder GetFolderWithId(int id);
void AddFolder(Folder newFolder);
void ModifyFolder(Folder folderToModify, Folder folderAfterModification);
void RemoveFolder(Folder folderToRemove);
并且我已经实现了DatabaseFolderRepository
,可以说CacheFolderRepositoryDecorator
。现在,“数百行”之后,我想添加SkyDrive文件夹的功能,因此我准备添加SkyDriveFolderRepository
。不幸的是,当DatabaseFolderRepository
实现使用同步方法与数据库进行通信时,skydrive使用了很多async
和await
。在这种情况下该怎么办?在使用void方法将其标记为异步的情况下,这不是解决方案(需要进行异常处理)。我应该更改接口返回Task<T>
吗?当然可以在上面的示例中使用,但是它们只是2个接口实现类。还是我的大多数接口都应该具有Task
返回类型(因此您不需要规则)?
IFolder
接口,为什么Folder
在所有方法中都依赖具体的实现()?