का उपयोग कर शून्य पैरामीटर के लिए जाँच करें क्या एक विशेषता का उपयोग कर पैरामीटर के मान को जांचना संभव है? मैंने कुछ सिस्टम विशेषताओं जैसे [FromUri] को इस तरह इस्तेमाल किया है। मैं कुछ इस तरह के लिए उम्मीद कर रहा हूँ:एक विशेषता
public void Method([NotNull] string name, [NotNull] DateTime? date)
{ }
जहां NotNull एक विशेषता यह है कि यदि यह रिक्त है देखने के लिए मूल्य जांच करता है। यदि मान शून्य है तो यह एक त्रुटि फेंक देगा।
यहाँ मैं वर्तमान में
मैं वर्तमान में निर्धारित करने के लिए मान शून्य है एक स्थिर सहायक वर्ग है कि एक अभिव्यक्ति और पैरामीटर ही ले जाता है का उपयोग कर रहा है और के नाम निर्धारित करने के लिए अभिव्यक्ति का उपयोग करता है पैरामीटर।
// Invoke method within ArgumentHelper class
ArgumentHelper.RequireNotNullOrEmpty(() => state, state);
// Method within static class ArgumentHelper
public static void RequireNotNullOrEmpty<T>(this Expression<Func<T>> argumentExpression, string value)
{
var body = ((MemberExpression)argumentExpression.Body);
if (string.IsNullOrEmpty(value))
{
// Throw error "Required field '" + body.Member.Name + "' is missing.";
}
}
बोनस: यह भी अच्छा होगा यदि मैं किसी भी तरह सिर्फ मेरे वर्तमान समाधान की तरह अपने नाम के साथ एक स्ट्रिंग गुजर, बिना वैरिएबल का नाम हो सकता है किया जाएगा।
आपका स्थिर सहायक वर्ग एक बहुत अधिक के लिए एक सरल '== null' – Sayse
* यह संभव मूल रूप से एक विशेषता का उपयोग कर एक पैरामीटर का मान की जाँच करने के है की तुलना में कार्रवाई करने के लिए महंगा हो रहा है? * यह वास्तव में क्या नहीं है गुण के लिए हैं। विशेषताएं मेटा डेटा के साथ सजाने वाले वर्गों, विधियों, गुणों और तर्कों के लिए हैं, वास्तव में स्वयं प्रसंस्करण करने के लिए नहीं। आपको अभी भी कॉलर या आपके फ़ंक्शन को वास्तव में शून्य की जांच करने की आवश्यकता होगी, इस स्थिति में केवल * शून्य * के लिए जांच करना आसान होगा। आपको स्वचालित रन-टाइम जांच नहीं मिल जाएगी। –
'[FromUri]' संपत्ति केवल वैसे ही काम करती है क्योंकि कॉलर (जो कि वेब एपीआई स्वयं है) उस विधि के गुणों की जांच करता है, जिसे वह कॉल करने का प्रयास कर रहा है और यदि यह उस विशेषता को देखता है, तो यह मान से सम्मिलित करना जानता है uri। विशेषता स्वयं ऐसा नहीं करती है। यह कॉलर्स जिम्मेदारी है। प्रतिक्रिया के लिए –