मैं सोच रहा हूँ कि क्या मैं अपवाद फेंक या फोन Contract.Requires<TException>
अपवाद बनाम अनुबंध को फेंकना। <T> की आवश्यकता है?
उदाहरण के लिए चाहिए:
public static void Function(String str)
{
if (str == null) throw new ArgumentNullException("str", "Input string cannot be null.");
// ...
}
बनाम
public static void Function(String str)
{
Contract.Requires<ArgumentNullException>(str != null, "Input string cannot be null.");
// ...
}
Contract.Requires<TException>
के बाद से CONTRACTS_FULL
प्रतीक मैं इसे में रख सकते हैं की आवश्यकता नहीं है मेरी रिलीज भी बनाता है।
कोन:
यह मेरा विचार है आप कस्टम अपवाद प्रकार निर्माता की एक ओवरलोड संस्करण फोन नहीं कर सकते हैं। कन्स्ट्रक्टर को अतिरिक्त पैरामीटर पास करने का कोई तरीका नहीं है।
प्रो: स्टेटिक उपकरण समर्थन (उदाहरण के लिए अनुबंध उल्लंघन के कॉलर को सूचित करें)।
मुझे किस का उपयोग करना चाहिए, और किस तरह की स्थिति के लिए?
अपवाद प्रकार के रचनाकारों को अधिभारित करने के लिए क्या लाभ होगा? –
@ पीटररची मैं उसी कारण के लिए मानता हूं जो रचनाकार मौजूद हैं। मुझे लगता है क्योंकि यह अधिक डेटा/जानकारी प्रदान करता है। – MasterMastic
मैं अपवाद प्रकार को अधिभारित करने के बारे में आपके प्रश्न को समझ नहीं पा रहा हूं। साथ ही, आप शायद अनुबंध के उपयोग को गलत समझ रहे हैं। की आवश्यकता है। यदि आप उस अधिभार का उपयोग करते हैं तो आपको अभी भी अपने रिलीज़ बिट्स पर टूल का उपयोग करने की आवश्यकता है। यदि आप CodeContract टूल्स के साथ डीएलएल को फिर से लिखना नहीं चाहते हैं तो यह वही नहीं करता है। –