interface IMyInterace
{
void Open();
object Read();
void Close();
}
class MyImplementation : IMyInterface
{
public void Open() { /* instantiates disposible class */ }
//...
public void Close() { /* calls .Dispose(); */ }
}
क्या इस प्रकार की स्थिति से निपटने का कोई अच्छा तरीका है यह सुनिश्चित करने के लिए कि कक्षा के अंदर डिस्पोजेबल उदाहरण कहें? (कॉलर्स को कोई संकेत नहीं है कि उन्हें दस्तावेज़ीकरण को छोड़कर 'बंद करें' को कॉल करना होगा।) IMyInterface के कार्यान्वयन आवश्यक रूप से IDISposible उदाहरणों को समाहित नहीं करते हैं और एप्लिकेशन के जीवन भर में बार-बार बंद हो जाते हैं और फिर से खोले जाते हैं।एक डिस्पोजेबल उदाहरण encapsulates की तुलना में एक वर्ग के साथ कैसे निपटने के लिए?
मैं ऐसा करने का सोच रहा हूँ:
- MyImplementation में IDisposible को लागू करें।
- सेट() को कॉल करने के लिए निपटान() सेट करें।
- पिछला कॉल बंद होने के लिए ओपन की शुरुआत पर बंद() या निपटान() को कॉल जोड़ें।
IMyInterface के उपयोगकर्ताओं को वे क्या कार्यान्वयन का उपयोग कर रहे पता नहीं है, तो मुझे यकीन है कि कितना मूल्य MyImplementation disposible बन गया है, और फिर से, नहीं सब कार्यान्वयन IDisposibles संपुटित जाएगा नहीं कर रहा हूँ।
पूर्ण डिस्पोजेबल पैटर्न जरूरत नहीं है।एक विनाशक के लिए कोई ज़रूरत नहीं है और इसलिए SuppressFinalize के लिए नहीं। –