कुछ त्रुटि प्रबंधन कोड विकसित करते समय मैं इस conundrum में आया था। मैं एक त्रुटि संदेश को एक संदर्भ (आउट) पास करना चाहता था जो लॉग हो जाएगा। इसने मेरे अज्ञात तरीकों को एकाधिक चेक करने का मौका दिया, प्रत्येक त्रुटि संदेश को आवश्यकतानुसार सेट करता है।
मैंने अज्ञात विधि के लिए एक नया रैपर लिखना समाप्त कर दिया जो अलग-अलग काम करता था।लेकिन मैंने जो सोचा था वह किसी के लिए कुछ मूल्य हो सकता है, यह है कि मैं केवल एक निजी विधि बना सकता था जिसमें आउट पैरामीटर था, और एक प्रतिनिधि को परिभाषित किया गया था, और मेरा कोड इसका उपयोग करता था। उम्मीद है कि यह किसी को मदद/प्रेरित करता है।
protected delegate void OutStringDelegate(int divider, out string errorText);
protected void codeWrapper(int divider, OutStringDelegate del)
{
string ErrorMessage = "An Error Occurred.";
try
{
del(divider, out ErrorMessage);
}
catch
{
LogError(ErrorMessage);
}
}
public void UseWrapper(int input)
{
codeWrapper(input, codeToCall);
}
private int somePrivateValue = 0;
private void codeToCall(int divider, out string errorMessage)
{
errorMessage = "Nice Error Message here!";
somePrivateValue = 1/divider; // call me with zero to cause error.
}
private void LogError(string msg)
{
Console.WriteLine(msg);
}
स्रोत
2012-01-16 16:04:36
मुझे आश्चर्य है कि आप कभी भी विधि विधि के बाहर एक अज्ञात प्रकार क्यों पारित करेंगे, जब तक कि आप प्रतिबिंब की खुशी को सीखना नहीं चाहते हैं। – Will
क्या मूल लिंक प्रश्न पर यह उत्तर पर्याप्त रूप से इसका उत्तर नहीं देता है? http://stackoverflow.com/questions/801147/scope-of-anonymous-methods/801563#801563 –
@Will: इसका अनाम प्रकारों से कोई लेना देना नहीं है। – SLaks