मान लीजिए कि मैंने इस IFolderRepositoryतरह के तरीकों के साथ इंटरफ़ेस बनाया है:
IEnumerable<Folder> GetAllFolders();
Folder GetFolderWithId(int id);
void AddFolder(Folder newFolder);
void ModifyFolder(Folder folderToModify, Folder folderAfterModification);
void RemoveFolder(Folder folderToRemove);
और मैंने लागू किया है DatabaseFolderRepositoryऔर कहता हूं CacheFolderRepositoryDecorator। अब Now सैकड़ों लाइनें बाद में ’मैं चाहूंगा कि मैं स्काईड्राइव फ़ोल्डर्स को जोड़ दूं, इसलिए मैं जोड़ने के लिए तैयार हूं SkyDriveFolderRepository। दुर्भाग्य से जब DatabaseFolderRepositoryकार्यान्वयन डेटाबेस के साथ बात करने के लिए सिंक्रोनस विधियों का उपयोग करता था, तो स्काइड्राइव एक asyncऔर बहुत का उपयोग करता है await। ऐसे मामले में क्या करना है? शून्य विधियों के मामले में, यह async को चिह्नित करना एक समाधान नहीं है (अपवाद को संभालने की आवश्यकता है)। क्या मुझे लौटने के लिए इंटरफ़ेस बदलना चाहिए Task<T>? यकीन है कि यह उपरोक्त उदाहरण में काम करेगा लेकिन वे सिर्फ 2 इंटरफ़ेस कार्यान्वयन कक्षाएं हैं। या मेरे अधिकांश इंटरफेस में Taskवापसी के प्रकार हैं (क्योंकि आपको नियम की आवश्यकता नहीं है)?
IFolderइंटरफ़ेस है, तो आपFolderअपने सभी तरीकों में ठोस कार्यान्वयन ( ) पर निर्भर क्यों हैं ?