के अंदर मूल विधि से वापस लौटें मैं एक विधि के अंदर काम कर रहा हूं जो सत्यापन जांच की एक श्रृंखला करता है और इनमें से कोई भी चेक विफल रहता है, यह कुछ सामान्य अस्वीकृति कोड चलाने के लिए Action<string>
पर कॉल करता है। यह करने के लिए कुछ इसी तरह की स्थापना की है:एक्शन <string>
public void ValidationMethod() {
Action<string> rejectionRoutine = (rejectionDescription) => {
// do something with the reject description
// other common code
};
if (condition != requiredValue) {
rejectionRoutine("Condition check failed");
// I currently have to put `return` here following every failed check
}
// many more checks following this
}
इस प्रणाली में एक बार एक चेक सत्यापन में विफल रहा है मैं बाकी को मान्य करने की कोई जरूरत नहीं है, मैं सिर्फ कार्रवाई के अंदर आम अस्वीकृति कोड चलाने के लिए और विधि से बाहर निकलना चाहते । वर्तमान में यह करने के लिए rejectionRoutine
पर कॉल के बाद मैं अगली पंक्ति पर return
करता हूं। मैं सोच रहा हूं कि क्या कोई तरीका है जिसमें मैं Action
के अंदर से मूल विधि के निष्पादन को वापस करने या समाप्त करने की क्षमता को शामिल कर सकता हूं?
मुझे पता है कि यह थोड़ा नाइट-पिक्य है लेकिन मुझे लगता है कि अगर किसी और को अतिरिक्त सत्यापन जांच जोड़ने की ज़रूरत है तो उसे सड़क के नीचे विस्तारशीलता के लिए बेहतर है (उन्हें खुद को सभी को वापस करने के साथ चिंता करने की आवश्यकता नहीं होगी जगह) साथ ही साथ कोड के अंदर निष्पादन समाप्त करने के सामान्य व्यवहार को समाहित करना जो इन मामलों के लिए आम माना जाता है।
अहह सर्व, महान दिमाग एक जैसे सोचते हैं।मैंने कोड लिखा था जो मुझे कुछ स्पॉट्स मिलने से पहले लगभग समान था जहां इसे समझ में नहीं आया था। कुछ चेक हैं जो अपवाद फेंक देंगे अगर उनका मूल्यांकन किया जाता है जब पिछली जांच छिड़काई होनी चाहिए। अर्थात। चेक 1 मूल्य है! = शून्य, चेक 2 मान के साथ कुछ कर सकता है यह मानते हुए कि यह शून्य नहीं हो सकता है अगर हमें यह –
@ जेसे कैटर मिला, जैसा कि मैंने अंत में कहा था, आपको 'सूची <ट्यूपल का उपयोग करना होगा , स्ट्रिंग >> '। यह केवल एक और अधिक कोड है। –
Servy
शायद मैं फनक में बूल के मूल्यांकन के तरीके के बारे में उलझन में हूं? क्या बूल वैल्यू का वास्तविक मूल्यांकन तब तक स्थगित हो जाता है जब तक फंक का आह्वान नहीं किया जाता है? मुझे लगता है कि जैसे ही Func बनाया गया था, इसका मूल्यांकन किया जाएगा –