मान लीजिए कि मैंने इस 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
अपने सभी तरीकों में ठोस कार्यान्वयन ( ) पर निर्भर क्यों हैं ?