मैं निम्नलिखित विस्तार विधि है:क्या यह विस्तार विधि रीफैक्टर करना संभव है?
public static void ThrowIfArgumentIsNull<T>(this T value, string argument)
where T : class
{
if (value == null)
{
throw new ArgumentNullException(argument);
}
}
और इस इसके उपयोग का एक उदाहरण है ....
// Note: I've poorly named the argument, on purpose, for this question.
public void Save(Category qwerty)
{
qwerty.ThrowIfArgumentIsNull("qwerty");
....
}
100% ठीक काम करता है।
लेकिन, मुझे यह नहीं लगता कि मुझे अपने अपवाद संदेश की सहायता के लिए चर का नाम कैसे प्रदान करना है।
मैं सोच रहा था अगर यह विस्तार विधि refactor करने के लिए संभव है, तो यह इस तरह कहा जा सकता है ...
qwerty.ThrowIfArgumentIsNull();
और यह अपने आप का पता लगा लेता है कि वेरिएबल का नाम 'qwerty' है और इसलिए है ArgumentNullException के मान के रूप में उपयोग करता है।
संभव है? मुझे लगता है कि प्रतिबिंब यह कर सकता है?
यह भी देखें http://stackoverflow.com/questions/869610/c-resolving-a-parameter-name-at-runtime/869629#869629 –
जांचें http://msmvps.com/blogs/jon_skeet/archive/ 2009/12/09/quot-magic-quot-null-argument-testing.aspx - ब्लॉग किया गया :) –
मुझे लगता है कि यह एक बहुत ही साधारण समस्या का एक बहुत ही कठिन समाधान है ... यदि आप विजुअल स्टूडियो का उपयोग कर रहे हैं, तो आप कर सकते हैं इसे बहुत आसान बनाने के लिए कोड स्निपेट का उपयोग करें;) –