c# - Is there a way I can enforce a method to follow certain method signature? -
मान लें कि मेरे पास
सार्वजनिक प्रतिनिधि डेटासेट स्वत: पूर्ण Delegate (स्ट्रिंग फ़िल्टर, लंबी पंक्ति ऑफसेट);
क्या मैं उस विधि हस्ताक्षर को लागू करने के लिए निम्नलिखित वर्ग बना सकता हूँ? (केवल एक कल्पित विचार):
सार्वजनिक वर्ग मध्यस्थी {[का पालन करें (स्वत: पूर्णत: डिएलेगेट)) सार्वजनिक डेटासेट ग्राहक_आटो पूर्ण (स्ट्रिंग फ़िल्टर, लंबी पंक्ति ऑफसेट) {var c = कनेक्ट (); // कुछ कोड यहाँ} [सार्वजनिक कॉन्टैप्लेट डिलीट करें] सार्वजनिक डेटासेट आइटम_आटो पूर्ण (स्ट्रिंग फ़िल्टर, लंबी पंक्ति ऑफसेट) {var c = Connect (); // कुछ कोड यहाँ} // यह संकलन त्रुटि देनी चाहिए, विधि हस्ताक्षर का पालन नहीं करता [सार्वजनिक डेटासेट शाखा का पालन करें (आटो कॉम्पलेक्ट डिलीएगेट करें)] कार्यालय ऑफिसअफोटो समाप्ति (स्ट्रिंग फ़िल्टर, स्ट्रिंग पंक्ति ऑफसेट) {var c = connect (); // कुछ कोड यहाँ}}
[संपादित करें]
उद्देश्य: मैं पहले से ही अपने मिडलटियर के तरीकों में विशेषताओं डाल दिया मेरे पास इस तरह की विधियां हैं:
सार्वजनिक सार वर्ग मध्यस्थ: मार्शलबीरफ ओब्जेक्ट {// ऑपरेशन। सेव केवल एक एन्यूम [कार्य ("चालान", ऑपरेशन। सहेजें)] सार्वजनिक इनवॉइस साइव (ऑब्जेक्ट पीके, डेटासेट डेल्टा); [टास्क ("रसीद", ऑपरेशन। सेव)] सार्वजनिक रसीद्रीव (वस्तु पीके, डाटासेट डेल्टा); // कंपाइलर ध्वज नहीं कर सकता यदि कोई टीम के मानक [टास्क ("रसीद", ऑपरेशन। सेव)] से सार्वजनिक रिसीब्रीवेट (ऑब्जेक्ट पीके, ऑब्जेक्ट [] डेल्टा) से विचलित हो जाता है; }
फिर रनटाइम पर, मैं सभी मिडलटियर के तरीकों को पुनरावृति कर दूंगा और उन्हें संग्रह में डालूंगा (विशेषताओं में बहुत मदद मिलती है), फिर उन्हें जीत के प्रतिनिधि प्रतिनिधि पर मैप करें (इंटरफ़ेस, प्लगइन्स लोड किए गए सिस्टम के रूप में)
मैं सोच रहा हूं कि अगर मैं विशेषताओं को अधिक आत्म-वर्णन कर सकता हूं, तो संकलक विसंगतियों को पकड़ सकता है।
नामस्थान क्राफ्ट {// सार्वजनिक प्रतिनिधि डेटासेट सेवडीलेगेट (ऑब्जेक्ट पीके, डाटासेट डेल्टा); // परिभाषित कार्य ऍट्रिब्यूट सार्वजनिक सार वर्ग मध्यस्थ: मार्शलबीरफ ओब्जेक्ट {[टास्क ("इनवॉइस", सेवडीलेगेट)] सार्वजनिक सार इनवॉइस साइवे (वस्तु पीके, डाटासेट डेल्टा); [टास्क ("रसीद", सेवडीलेगेट)] // यह बहुत अच्छा है अगर कंपाइलर सार्वजनिक सार रसीद_सिवेट (ऑब्जेक्ट पीके, ऑब्जेक्ट [] डेल्टा) को झंडा कर सकता है; }}
मैं सोच रहा हूं कि प्रत्येक वर्ग के तरीकों को लगाते हुए, यह हमेशा एक रिमोटिंग ऑब्जेक्ट इन्स्तांत करने के लिए एक ओवरकिल होगा। और उन्हें अलग-अलग कक्षा में डालकर, कोड पुन: उपयोग करने में सहायता करना कठिन हो सकता है, मान लें कि इनवॉइस साइवेट को रसीद_ऑन पर कुछ जानकारी की आवश्यकता है। वास्तव में मुझे यहां एक रिपोर्ट (क्रिस्टल) भी मिली है, जो कि रिमोटिंग मिडलटेयर डाटासेट से डेटा को आविष्कृत विधि के अंदर लाया है, इसे अन्य तरीकों पर कुछ जानकारी मिलती है और अपने डाटासेट में विलय हो जाता है, ये सभी मिडलटेयर पर हो रहे हैं, कोई भी गोलट्रिप नहीं, सभी सर्वर-साइड (मध्यम-स्तरीय) पर किए जाते हैं
आप दोनों FollowAttribute को कार्यान्वित कर सकते हैं
आप अपने उदाहरण में उपयोग करते हैं और यह जांच सकते हैं कि उस विशेषता के साथ टैग की गई किसी भी विधि को एक ही हस्ताक्षर के रूप में उल्लेख किया गया प्रतिनिधि है। तो यह संभव होना चाहिए।
Comments
Post a Comment