Giả sử tôi đã tạo giao diện IFolderRepository
với các phương thức như thế:
IEnumerable<Folder> GetAllFolders();
Folder GetFolderWithId(int id);
void AddFolder(Folder newFolder);
void ModifyFolder(Folder folderToModify, Folder folderAfterModification);
void RemoveFolder(Folder folderToRemove);
và tôi đã thực hiện DatabaseFolderRepository
và cho phép nói CacheFolderRepositoryDecorator
. Bây giờ 'hàng trăm dòng sau' Tôi muốn thêm chức năng của các thư mục SkyDrive để tôi sẵn sàng thêm SkyDriveFolderRepository
. Thật không may trong khi DatabaseFolderRepository
thực hiện đã sử dụng các phương thức đồng bộ để nói chuyện với cơ sở dữ liệu, skydrive người ta sử dụng rất nhiều async
và await
. Làm gì trong trường hợp như vậy? Trong trường hợp các phương thức void đánh dấu, nó không đồng bộ không phải là một giải pháp (cần xử lý ngoại lệ). Tôi có nên thay đổi giao diện để trở lại Task<T>
? Chắc chắn nó sẽ hoạt động trong ví dụ trên nhưng chúng chỉ là 2 lớp thực hiện giao diện. Hoặc hầu hết các giao diện của tôi có Task
loại trả về (đối với bạn sẽ không cần quy tắc này)?
IFolder
giao diện, tại sao bạn lại dựa vào việc triển khai cụ thể (Folder
) trong tất cả các phương thức của mình?